【问题标题】:Query where clause over array elements inside jsonb PSQL查询jsonb PSQL中数组元素的where子句
【发布时间】: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...

标签: java postgresql jooq jsonb


【解决方案1】:

您可以使用包含运算符@>,它也适用于数组

select *
from name_tagstable
where tagvalues -> 'tags' @> '[{"key": "x", "value": "y"}]';

【讨论】:

  • 感谢您的回答,它正在工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
相关资源
最近更新 更多