sql—获取jsonb数组中具有相同键的所有对象的列表

x6yk4ghg  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(415)

我有一张table mytable 还有一个jsonb专栏 employees 包含如下数据:

[      {
         "name":"Raj",
         "email":"raj@gmail.com",
         "age":32

},
      {
         "name":"Mohan",
         "email":"Mohan@yahoo.com",
         "age":21

        }   
]

我只想提取名称并以列表格式保存,因此生成的单元格如下所示:

['Raj','Mohan']

我试过了

select l1.obj ->> 'name' names
from mytable t
cross join jsonb_array_elements(t.employees)   as l1(obj)

但这只返回第一个数组元素的名称。如何获取所有数组元素的名称?谢谢! PostgreSQL 11.8

wlzqhblo

wlzqhblo1#

在postgres 12中,你可以使用 jsonb_path_query_array() :

select jsonb_path_query_array(employees, '$[*].name') as names
from mytable

在早期版本中,您需要取消通知,然后重新聚合:

select (select jsonb_agg(e -> 'name') 
        from jsonb_array_elements(employees) as t(e)) as names
from mytable

相关问题