[英]Query values from each json in a json array on postgresql
我数据库中的每个记录都有一个json列表,我试图从该列表中返回每个元素内的值。
我想回来
environmental services, energy & utilities
从
[
{
"key": "environmental services"
},
{
"key": "energy & utilities"
}
]
和。
construction
从
[
{
"key": "construction"
}
]
每个记录中每个json列表的长度不确定。
我可以通过以下方法获得第一个值:
select
column_name -> 0 -> 'key'
from table
但是如何获得全部。
我如何在Postgresql中做到这一点?
在横向连接中使用函数jsonb_array_elements()
来获取数组的所有元素以及聚合函数string_agg()
:
with my_table(json_col) as (
values
('[
{
"key": "environmental services"
},
{
"key": "energy & utilities"
}
]'::jsonb),
('[
{
"key": "construction"
}
]')
)
select string_agg(value->>'key', ', ')
from my_table
cross join jsonb_array_elements(json_col)
group by json_col -- use PK here (if exists)
string_agg
--------------------------------------------
environmental services, energy & utilities
construction
(2 rows)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.