我有一个数据表my_table
,如下所示
| id | column1 | data |
|----+---------+------------|
| 1 | value_1 | ["A", "B"] |
| 2 | value_2 | ["B", "C"] |
| 3 | value_3 | ["A", "C"] |
| 4 | value_4 | ["E", "B"] |
字符串
我需要提取列data
中所有唯一JSON字符串的列表,例如
"A"
"B"
"C"
"D"
"E"
型
我尝试了Postgresql文档中的一些json函数,比如:
select * from json_each_text(select data from my_table as foo)
型
但我在“from”(第二个“from”)处或附近出现语法错误。
我也试过去掉括号外的别名来影响第一个“选择”,但到目前为止还没有成功。
我可以访问列中包含的信息,并在执行以下操作时提取单个值或计数:
select count(*) from my_table
where data::jsonb ? 'A' = true;
型
结果是“2”,这是预期的结果。
如何获取json列中包含的值的列表?
1条答案
按热度按时间iqih9akk1#
这可以使用
json_array_elements
(或者jsonb_array_elements
,如果数据类型是jsonb)将json(b)数组转换为行:字符串
对于这个简单的数据:
型
结果如下:
型
Demo here的