繁体   English   中英

PostgreSQL json数组交集查询

[英]PostgreSQL json array intersection query

我有一个带有jsonb 数据列的表,看起来像这样:

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

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

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

这样的查询看起来如何?

这是一个执行类似操作的查询,但它会检查所有提供的字符串是否存在于category数组中:

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

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

有一个?| 采用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM