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

时间:2019-01-25 02:10:47

标签: arrays postgresql jsonb unnest

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

我可以使用unnest()来单独显示嵌套的JSONB元素,但是在将其与LIKE表达式结合使用时遇到了麻烦。我的查询:

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

导致错误:

  

WHERE的参数不能返回集合

如何正确处理?

1 个答案:

答案 0 :(得分:0)

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

相关: