查询jsonb PSQL中数组元素的where子句
Posted
技术标签:
【中文标题】查询jsonb PSQL中数组元素的where子句【英文标题】:Query where clause over array elements inside jsonb PSQL 【发布时间】:2022-01-04 11:30:49 【问题描述】:我有一个 JSON 节点,我必须在其上编写 PSQL 查询, 我的表模式名称(字符串),tagValues(jsonb)。示例 tagValue 数据如下所示
Name_TagsTable
uid | name(String)| tagValues(jsonb)
-----+-------------------+-----------------------------
1 | myName | "tags": ["key":"key1","value" : "value1", "key":"key1","value" : "value2", "key":"key3","value" : "value3", "key":"key4","value" : "value4"]
我需要一个查询,为我提供名称 标签列表中至少有一个标签满足条件 键 = 'X' 和值 = 'Y'
帮我查询。我正在使用 PSQL 10.0
【问题讨论】:
你用 jOOQ 标记了这个。不确定是否与您的问题相关,但如果是,jOOQ 尚不支持相关的 PG 运算符。请改用plain SQL templating... 【参考方案1】:您可以使用包含运算符@>
,它也适用于数组
select *
from name_tagstable
where tagvalues -> 'tags' @> '["key": "x", "value": "y"]';
【讨论】:
感谢您的回答,它正在工作。以上是关于查询jsonb PSQL中数组元素的where子句的主要内容,如果未能解决你的问题,请参考以下文章
用于嵌套 jsonb 的雄辩的 Where 子句。 PostgreSQL