我的表中有一个名为
jsonb[]
的 jsonb_column
列,其中包含 JSONB 对象数组。例如:
jsonb_column = [
"{\"title\":\"title 1\"}",
"{\"title\":\"title2\"}"
]
我正在尝试提取标题字段等于“title2”的 JSONB 对象。
SELECT *
FROM tablename,
jsonb_array_elements(jsonb_column) AS job
WHERE job->>'title' = 'title2';
它不会返回任何内容。怎样做才是正确的呢?
jsonb[]
(包含纯 JSON 对象)与存储为 jsonb
的 JSON 数组的另一个混合。jsonb_array_elements()
。参见:
但是
jsonb[]
是 jsonb
值的 Postgres 数组。要取消嵌套,请使用
unnest()
:
SELECT *
FROM tbl, unnest(js) AS job
WHERE job->>'title' = 'title2';
请注意,dbfiddle 当前会吞掉显示中必要的反斜杠。我报告了一个错误。
相关: