我需要使用LIKE
或ILIKE
-应用于JSONB[]
列的元素进行搜索。
我可以使用unnest()
来单独显示嵌套的JSONB
元素,但是在将其与LIKE
表达式结合使用时遇到了麻烦。我的查询:
SELECT
UNNEST( column_jsonb[] )
FROM
table1
WHERE
UNNEST( column_jsonb[] ) ->> 'member_type' LIKE '%member%'
导致错误:
WHERE的参数不能返回集合
如何正确处理?
答案 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%';
相关: