在 jsonb 数组中查找 json 值

问题描述 投票:0回答:1

我的表中有一个名为

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';

它不会返回任何内容。怎样做才是正确的呢?

sql database postgresql jsonb unnest
1个回答
0
投票

jsonb[]
(包含纯 JSON 对象)与存储为
jsonb
的 JSON 数组的另一个混合。
对于后者,您可以像您尝试过的那样使用
jsonb_array_elements()
。参见:

但是

jsonb[]
jsonb 值的
Postgres 数组
。要取消嵌套,请使用
unnest()
:

SELECT *
FROM   tbl, unnest(js) AS job
WHERE  job->>'title' = 'title2';

小提琴

请注意,dbfiddle 当前会吞掉显示中必要的反斜杠。我报告了一个错误。

相关:

© www.soinside.com 2019 - 2024. All rights reserved.