【问题标题】:How to filter on a json column for a specific value?如何过滤特定值的 json 列?
【发布时间】:2020-04-21 05:10:43
【问题描述】:

我在 postgres 上,有一个表 orders 和一个 data 列,它是 jsonb。这是其中一个数据的精简示例 - 它们具有 UUID 键和值 { id, value }

  {
    '36462bd9-4ffa-4ee3-9a04-c2eb7575fe6c': {
      id: '',
      value: '2020-04-20T01:32:14.017Z',
    },
    '9baaed61-1275-4bbc-ae4f-2994ec9f7fda': { id: '4', value: 'Paper Towels' },
  }

如何进行操作,例如查找data 具有某些UUID(即9baaed61-1275-4bbc-ae4f-2994ec9f7fda)和{ id: '4' } 的任何订单?

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    您可以使用包含运算符@>

    select *
    from the_table
    where data @> '{"9baaed61-1275-4bbc-ae4f-2994ec9f7fda": {"id": "4"}}'; 
    

    这假设您问题中的无效 JSON id: '4' 确实存储为 "id":"4"。如果该值存储为数字:"id": 4,那么您需要在比较值中使用它。

    【讨论】:

      猜你喜欢
      • 2017-07-02
      • 1970-01-01
      • 2016-04-05
      • 2021-02-07
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 2014-08-19
      • 1970-01-01
      相关资源
      最近更新 更多