首页 > 解决方案 > 有没有办法使用匹配子句在 json postgres 列中搜索?

问题描述

我正在尝试从 Postgres JSON 列中搜索记录。存储的数据有一个结构是这样的

{
  "contract_shipment_date": "2015-06-25T19:00:00.000Z",
  "contract_product_grid": [
    {
      "product_name": "Axele",
      "quantity": 22.58
    },
    {
      "product_name": "Bell",
      "quantity": 52.58
    }
  ],
  "lc_status": "Awaited" 
}

我的表名是 Heap,列名是 contract_product_grid。此外,contract_product_grid 列可以包含多个产品记录。我找到了此文档,但无法获得所需的输出。

需要的情况是,我有一个过滤器,用户可以在其中选择product_name,并在输入名称的基础上使用匹配子句,将获取记录并返回给用户。

标签: sqljsonpostgresql

解决方案


SELECT * FROM ( SELECT JSON_ARRAY_ELEMENTS(contract_product_grid::json) AS js2 FROM heaps WHERE 'contract_product_grid' = 'contract_product_grid' ) q WHERE js2->> 'product_name' IN ('Axele', 'Bell') 正如我在问题中提到的那样,我的列名是“contract_product_grid”,我只需要从中进行搜索。使用此查询,我可以使用带有输入产品名称的 IN 子句获取 contract_product_grid 信息。


推荐阅读