如何对 JSONB 数组的元素使用 LIKE?

How to use LIKE on elements of a JSONB array?

我需要使用 LIKEILIKE 进行搜索 - 应用于 JSONB[] 列的元素。

我可以使用 unnest() 单独显示嵌套的 JSONB 元素,但我无法将它与我的 LIKE 表达式结合起来。我的查询:

SELECT
    UNNEST( column_jsonb[] )
FROM
    table1
WHERE
    UNNEST( column_jsonb[] ) ->> 'member_type' LIKE '%member%'

结果出错:

argument of WHERE must not return a set

如何做对?

如果确实是 jsonb[] 列:

SELECT * -- or whatever
FROM   t, unnest(jsonb_col) j
WHERE  j->>'member_type' LIKE '%member%';

这是隐含的 CROSS JOIN LATERAL

如果它是普通 jsonb 列中的 JSON 数组(更有可能):

SELECT *
FROM   t1, jsonb_array_elements(jsonb_col) j
WHERE  j->>'member_type' LIKE '%member%';

相关:

  • Query for array elements inside JSON type