sql - 在 Postgres 中查询 JSONB 中的复杂数组
问题描述
我有一个 JSONB 字段值:
{
"status":200,
"response":{
"page":1,
"limit":10,
"total":4,
"orders":[
{
"id":40201
},
{
"id":40111
}
]
}
}
如何查询 id=40201 的订单数组对象?
我试图用 response->orders->[id: 40201] 查询所有行
解决方案
如果您知道这是数组中的第一个对象(从零开始!):
SELECT
yourjson -> 'response' -> 'orders' -> 0
如果没有,您必须将数组扩展为每个元素一行,jsonb_array_elements()
并过滤每一行:
SELECT
elems.value
FROM
yourtable,
jsonb_array_elements(yourjson -> 'response' -> 'orders') elems
WHERE
elems ->> 'id' = '40201'
推荐阅读
- c - 如何使用一个或多个参数从 bash 脚本运行 C 程序?
- r - 如何在R中手动获得最小二乘估计
- javascript - IFRAME window.location.reload() 在 IE11 中重定向主窗口
- c++ - 除了 system("pause") 是否有一个选项可以保持可执行文件打开?
- c++ - 使用_getch创建链表并反转链表
- confluent-platform - 在本地 docker 设置上安装 kafka-connect-jdbc 的 --worker-configs 应该是什么
- git - 如何在 gitignore 中显示对项目的更改
- arrays - 找出可以被3整除的数
- c# - Linq GroupBy 属性范围
- ipc - 无法从另一个孩子读取一个孩子写入的共享内存