PostgreSQL json数组交集查询

时间:2015-09-27 20:29:26

标签: sql json postgresql

我有一个包含jsonb 数据列的表,如下所示:

data: {
    "categories": [
        "Category A",
        "Category D"
    ],
    "something": "dsa",
}

我想查询类别数组(非空交集)中存在一个或多个字符串的行。

让我们假设要检查的这些字符串是“A类”和“B类”。

这样的查询怎么样?

这是一个类似的查询,除了它检查所有提供的字符串是否存在于类别数组中:

SELECT *
FROM table
WHERE data->'categories' @> '["Category A", "Category B"]'

我需要此查询来匹配至少一个字符串,而不是所有字符串。

1 个答案:

答案 0 :(得分:5)

有一个?| operatorjsonbtext[]描述为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