首页 > 解决方案 > 如何在 JSONB 数组的元素上使用 LIKE?

问题描述

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

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

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

导致错误:

WHERE 的参数不能返回一个集合

如何做到这一点?

标签: arrayspostgresqljsonbunnest

解决方案


如果它确实是一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%';

有关的:


推荐阅读