postgreSql查询复杂json数组字段
因为在生产环境中使用到两次 故而记录一下对复杂json字段提取字段值的SQL
先看数据格式:假设表名为 ry;下面的数据格式是我们的字段ryxx
-
{
-
"bh": "123",
-
"jbxx": [{
-
"xm": "张三",
-
"nl": "30"
-
},{
-
"xm": "李四",
-
"nl": "35"
-
}]
-
}
问题来了 我要去ryxx里面的所有人的姓名 那么改怎么取呢? 可以先把ryxx这个字段查出来
select ry.ryxx::json->>'jbxx' jbxx from ry
查出来的结果 肯定就是
jbxx |
[{"xm": "张三","nl":"'30"},{"xm": "李四","nl": "35"}] |
这里使用json的取值法 可以很轻松取出json对象里面的某个字段 但是这里取到的结果 却成了json数组的格式了,这里再使用字段转json格式再->>取值的方法就不适用了。
这里需要使用的就是一个函数:json_array_elements 需要注意的是 json_array_elements需要处理的是json数组格式的字段 如果这个字段是"[{},{}]"这种格式的 就可以直接使用,但是前提是需要把这个字段转为json格式;
select json_array_elements((ryxx::json->>'jbxx')::json) jbxx from ry
到这里 我们就又拿到了"{}"这种json对象了,所以json_array_elements的作用是什么?就是拆解数组,看下结果:
jbxx |
{"xm": "张三","nl":"'30"} |
{"xm": "李四","nl": "35"} |
这下再回到最开始的取值方法
select json_array_elements((ryxx::json->>'jbxx')::json)::json->> 'xm' xm jbxx from ry
上结果:
xm |
张三 |
李四 |
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgibkkf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13