数据格式

两行测试数据
字段名pushed
json里包含着数组
第一条数据包含deptId:[101,102]:
{"dep":[{"nodeId":101,"deptId":101,"parentDeptId":100,"deptName":"第一分公司"},{"nodeId":102,"deptId":102,"parentDeptId":100,"deptName":"第二分公司"}]}
第二条数据包含deptId:[103]:
{"dep":[{"nodeId":103,"deptId":103,"parentDeptId":101,"deptName":"研发部门"}]}

查询全部的deptId

json_extract(列名,json中属性名)

select json_extract(pushed,'$.dep[*].deptId') as deptIds from bus_accountability_and_integrity

查询结果
查询json数据中全部的deptId值

判断json数据中是否包含某个值

json_contains(json中属性名,要对比的值)

select * from bus_accountability_and_integrity where json_contains(pushed->'$.dep[*].deptId', '101')

对比结果(查询出了一条数据,第二条数据中parentDeptId也是101,但是我们把第一个参数精确到了deptId所以就查询不到了)
预计查询一条,结果一条,正确

第三种json_extract搭配like查询更为灵活

查询pushed字段json数据中deptId属性值包含101的数据

select * from bus_accountability_and_integrity WHERE json_extract(pushed,'$.dep[*].deptId') like "%101%";

在这里插入图片描述
第二条数据的parentDeptId为101,我们仅需修改范围即可实现json数组中查找
查找范围扩大到dep包含的json数组中全部数据

select * from bus_accountability_and_integrity WHERE json_extract(pushed,'$.dep') like "%101%";

小伙伴们,可以根据自己需求手动修改;
在这里插入图片描述

tips:貌似从5.7以后的版本才能使用对json操作的函数;

如果这篇文章对你有帮助,请动动你发财的小手点点赞,证明你来过。
mysql新版本安装版下载地址
友情链接

GitHub 加速计划 / js / json
18
5
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:2 个月前 )
6be4e856 3 天前
663058e7 6 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐