Postgresql 如何解析postgres查询中的json数组
我需要从下表列解析json数组。结果应该是下面示例中Q2问题的答案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'作为答案,但在
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'