Man*_*uer 8 sql postgresql jsonb
许多jsonb / json函数期望列的所有值要么是json数组类型(如jsonb_array_length),要么仅是json对象类型(如jsonb_build_oject)。
数据库中有一些jsonb列,其中包含数组和对象根的混合,是否有任何简单的方法可以过滤掉数组和对象,以便查询
SELECT DISTINCT jsonb_object_keys(my_column) FROM my_table;
cannot call jsonb_object_keys on an array
Run Code Online (Sandbox Code Playgroud)
要么
SELECT my_column FROM my_table WHERE jsonb_array_length(column) > 0;
cannot get array length of a non-array
Run Code Online (Sandbox Code Playgroud)
如文档中所述,功能jsonb_typeof或json_typeof可用于应用这种过滤
喜欢
SELECT DISTINCT jsonb_object_keys(my_column)
FROM my_table WHERE jsonb_typeof(column) ='object' ;
Run Code Online (Sandbox Code Playgroud)
要么
SELECT my_column FROM my_table
WHERE jsonb_array_length(column) > 0
AND jsonb_typeof(column) ='array' ;
Run Code Online (Sandbox Code Playgroud)