sql - 有没有办法使用匹配子句在 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,并在输入名称的基础上使用匹配子句,将获取记录并返回给用户。
解决方案
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 信息。
推荐阅读
- vue.js - 如果字段包含数字,如何禁用按钮?Vue JS
- javascript - Material UI 中的自定义媒体查询
- python - 循环遍历 csv 文件中的单词并在 python 中替换
- css - 在 CSS / SCSS 中具有类的下一个兄弟姐妹
- javascript - 传单标记集群自动
- vim - 在vim中的一个命令中替换模式之前和之后的文本
- ffmpeg - ffmpeg 到 kurento rtp 流断断续续的视频问题
- javascript - 在 Javascript 中填充 JSON 中的动态值
- python - rpy2 在脚本结束时产生无用的警告
- mongodb - 使用 MongoDB Spring Data Aggregation 匹配日期时间字段的问题