Arrays 按jsonb中数组长度查询jsonb类型的列
我有一个Postgres表Arrays 按jsonb中数组长度查询jsonb类型的列,arrays,postgresql,jsonb,Arrays,Postgresql,Jsonb,我有一个Postgres表account\u summaries,其中有一列names,类型为jsonb,数据是数组形式的,例如['test 1','test 2'],默认情况下有空数组[] id | names 1 | [] 2 | ['test 1', 'test 2'] 3 | [] 例如,我可以从帐户摘要中选择json(名称),它会给我一个例子 json_agg
account\u summaries
,其中有一列names
,类型为jsonb
,数据是数组形式的,例如['test 1','test 2']
,默认情况下有空数组[]
id | names
1 | []
2 | ['test 1', 'test 2']
3 | []
例如,我可以从帐户摘要中选择json(名称),它会给我一个例子
json_agg
---------------------------------------------
[[], ["test 1", "test 2"], [], [], []]
(1 row)
现在,假设我想写一个查询,这样:
json_agg
---------------------------------------------
['test 1', 'test 2']
(1 row)
我试过了
SELECT CASE WHEN cardinality(jsonb_agg(names))>0 THEN names ELSE NULL END from account_summaries;
但它不起作用
我用的是Postgres 11.4
with t(x) as (values('["a","b"]'::jsonb),('[]'),('["c","d"]'))
select jsonb_agg(j)
from t, jsonb_array_elements(x) as j;
jsonb_agg
----------------------
["a", "b", "c", "d"]