我正在尝试学习如何过滤jsonb数据。当我跑步时:
SELECT DISTINCT jsonb_array_elements(data)
FROM reports
WHERE data @> '[{"status": "Active"}]'
与其仅返回status: Active
的行,它似乎忽略了WHERE
子句,我还返回了包含status: Inactive
的行
需要一些帮助来了解此处的情况。
数据看起来像
[{"report": "Report1", "status": "Active"},
{"report": "Report2", "status": "Inactive"},
{"report": "Report3", "status": "Inactive"},
{"report": "Report4", "status": "Active"}]
答案 0 :(得分:0)
select * from reports
join lateral jsonb_array_elements(data) j(v)
on true
where
v->>'status' = 'Active'
此处v
是jsonb数组中的元素,例如{"report": "Report1", "status": "Active"}
然后使用->>
运算符过滤“状态”键,其中值是“活动”