Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在postgresql上查询json数组中每个json的值_Sql_Json_Postgresql - Fatal编程技术网

在postgresql上查询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

数据库中的每条记录都有一个json列表,我试图从中返回每个元素中的值

我想回去

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)