Postgresql 如何解析postgres查询中的json数组

Postgresql 如何解析postgres查询中的json数组,postgresql,Postgresql,我需要从下表列解析json数组。结果应该是下面示例中Q2问题的答案 id data 1 [{"questionId":"Q1","answer":"A1"},{"questionId":"Q2","answer":"A2"}] 2 [{"questionId":"Q1","answer":"A1"},{"questionId":"Q2","answer":"A2"}] 所以结果应该是这样的 1 A2 2 A2 我试过了 data::json->'answer'作为答案,但在

我需要从下表列解析json数组。结果应该是下面示例中Q2问题的答案

id      data
1   [{"questionId":"Q1","answer":"A1"},{"questionId":"Q2","answer":"A2"}]
2   [{"questionId":"Q1","answer":"A1"},{"questionId":"Q2","answer":"A2"}]
所以结果应该是这样的

1 A2
2 A2
我试过了 data::json->'answer'作为答案,但在数组上似乎不起作用

试试看

创建临时表t id串行主键,数据json; 插入t 数据 价值观 “[{问题ID:Q1,答案:A1},{问题ID:Q2,答案:A2}” ; 插入t 数据 价值观 “[{问题ID:Q1,答案:A1},{问题ID:Q2,答案:A2}” ; -Q1是数组中的第二个元素,其索引为1。 从t中选择id,data::json>“{1,answer}”; 输出:

+------+------------+
| id   | ?column?   |
|------+------------|
| 1    | "A2"       |
| 2    | "A2"       |
+------+------------+
您可以使用json_数组_元素,并使用WHERE子句筛选行

select id, j->>'answer' as answer FROM t 
cross join lateral json_array_elements(data::json) as j
WHERE j->>'questionId' = 'Q2'