如果我将这些数据放在jsonb
字段中:
{'name': 'pratha', 'email': 'p@g.com', 'sub': { 'id': 1 } }
我可以通过此查询选择name
:
SELECT data_field->>'name' from users where ....
但是,当它们位于array
中时,此查询将不起作用:
[
{'name': 'pratha', 'email': 'p@g.com', 'sub': { 'id': 1 } },
{'name': 'john', 'email': 'c@d.com', 'sub': { 'id': 2 } }
]
如何选择数组中的每个name
?
答案 0 :(得分:2)
进行jsonb_array_elements()
的横向交叉连接以获取数组的元素。然后,您可以从每个元素中提取名称。
SELECT sr.*,
jae.e->>'name'
FROM survey_results sr
CROSS JOIN LATERAL jsonb_array_elements(sr.data_field) jae (e);