PostgreSQL json数组交集查询

Pat*_*ryk 0 sql postgresql json

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

data: {
    "categories": [
        "Category A",
        "Category D"
    ],
    "something": "dsa",
}
Run Code Online (Sandbox Code Playgroud)

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

让我们假设要检查的这些字符串是"A类"和"B类".

这样的查询怎么样?

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

SELECT *
FROM table
WHERE data->'categories' @> '["Category A", "Category B"]'
Run Code Online (Sandbox Code Playgroud)

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

ara*_*nid 5

有一个?|操作员采取jsonbtext[]描述为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
Run Code Online (Sandbox Code Playgroud)