我有一个包含jsonb 数据列的表,如下所示:
data: {
"categories": [
"Category A",
"Category D"
],
"something": "dsa",
}
我想查询类别数组(非空交集)中存在一个或多个字符串的行。
让我们假设要检查的这些字符串是“A类”和“B类”。
这样的查询怎么样?
这是一个类似的查询,除了它检查所有提供的字符串是否存在于类别数组中:
SELECT *
FROM table
WHERE data->'categories' @> '["Category A", "Category B"]'
我需要此查询来匹配至少一个字符串,而不是所有字符串。
答案 0 :(得分:5)
有一个?|
operator将jsonb
和text[]
描述为exists any
:
select '["Category A", "Category D"]'::jsonb ?| array['Category A', 'Category B'];
?column?
----------
t
select '["Category A", "Category D"]'::jsonb ?| array['Category Ax', 'Category B'];
?column?
----------
f