sql - 如何过滤特定值的 json 列?
问题描述
我在 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' }
?
解决方案
您可以使用包含运算符@>
select *
from the_table
where data @> '{"9baaed61-1275-4bbc-ae4f-2994ec9f7fda": {"id": "4"}}';
这假设id: '4'
您问题中的无效 JSON 确实存储为"id":"4"
. 如果该值存储为数字:"id": 4
那么您需要在比较值中使用它。
推荐阅读
- elasticsearch - Elasticsearch 服务关闭,因为“临时文件目录 [...] 不存在 [...]”
- gekko - 可变输出总和的约束
- python - 硒元素无法滚动到视图中
- firebase - 颤振:删除(firebase 存储)
- opencl - 在 OpenCL(英特尔 FPGA)中声明 LUT 的最佳方式
- powerbi - 在 Power BI 中获取最后 08 天
- python - 如何在图像上绘制可拖放的线?
- python - Google Dataflow - PubSub 到 BigQuery - 性能问题
- node.js - 我想从整数键中获取值,javascript
- python-3.x - 为什么新旧昵称变化没有显示在终端中