【发布时间】:2021-05-07 00:26:16
【问题描述】:
我有一个 Postgres 表 account_summaries,其中有一列 names 类型为 jsonb,其中包含数组形式的数据,例如['test 1', 'test 2'] 默认为空数组[]。
id | names
1 | []
2 | ['test 1', 'test 2']
3 | []
我可以做select json_agg(names) from account_summaries,例如,它给了我。
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
【问题讨论】:
标签: arrays postgresql jsonb