在postgresql上查询json数组中每个json的值
数据库中的每条记录都有一个json列表,我试图从中返回每个元素中的值 我想回去在postgresql上查询json数组中每个json的值,sql,json,postgresql,Sql,Json,Postgresql,数据库中的每条记录都有一个json列表,我试图从中返回每个元素中的值 我想回去 environmental services, energy & utilities 从 和 从 其中,每条记录中每个json列表的长度是不确定的 我可以使用以下命令获取第一个值: select column_name -> 0 -> 'key' from table 但如何得到所有 如何在postgresql中执行此操作?在横向联接中使用函数来获取数组的所有元素和聚合函数: constr
environmental services, energy & utilities
从
和
从
其中,每条记录中每个json列表的长度是不确定的
我可以使用以下命令获取第一个值:
select
column_name -> 0 -> 'key'
from table
但如何得到所有
如何在postgresql中执行此操作?在横向联接中使用函数来获取数组的所有元素和聚合函数:
construction
[
{
"key": "construction"
}
]
select
column_name -> 0 -> 'key'
from table
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)