查询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子句的主要内容,如果未能解决你的问题,请参考以下文章

无法找出复杂子句中的 PSQL where 问题

从带有 WHERE 子句的 JSONB 字段中选择

用于嵌套 jsonb 的雄辩的 Where 子句。 PostgreSQL

如何使用动态数组使用where子句查询mysql数据库

如何在 PostgreSQL JSONB 列中查询具有异构元素的嵌套数组

Postgres: 如何在psql查询的字符串中插入双引号?