Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 检测jsonb属性是数组还是对象_Sql_Postgresql_Jsonb - Fatal编程技术网

Sql 检测jsonb属性是数组还是对象

Sql 检测jsonb属性是数组还是对象,sql,postgresql,jsonb,Sql,Postgresql,Jsonb,许多jsonb/json函数都希望列的所有值都是json数组类型(例如jsonb\u array\u length)或仅是json对象(例如jsonb\u build\uOject) 数据库中有一些jsonb列同时包含数组和对象根,有没有简单的方法过滤掉数组和对象,以便查询 SELECT DISTINCT jsonb_object_keys(my_column) FROM my_table; cannot call jsonb_object_keys on an array 或 如函数jso

许多jsonb/json函数都希望列的所有值都是json数组类型(例如
jsonb\u array\u length
)或仅是json对象(例如
jsonb\u build\uOject

数据库中有一些jsonb列同时包含数组和对象根,有没有简单的方法过滤掉数组和对象,以便查询

SELECT DISTINCT jsonb_object_keys(my_column) FROM my_table;
 cannot call jsonb_object_keys on an array

如函数
jsonb_-typeof
json_-typeof
中所述,可用于应用此类过滤

SELECT my_column FROM my_table WHERE jsonb_array_length(column) > 0;
cannot get array length of a non-array
SELECT DISTINCT jsonb_object_keys(my_column) 
FROM my_table WHERE jsonb_typeof(column) ='object' ;
SELECT my_column FROM my_table 
WHERE jsonb_array_length(column) > 0 
AND jsonb_typeof(column) ='array' ;