sql语句对数据库中的json数据的某个属性进行操作

mysql对json数据的操作

  • 数据格式
    • 查询全部的deptId
    • 判断json数据中是否包含某个值
    • 第三种json_extract搭配like查询更为灵活

数据格式

两行测试数据
sql语句对数据库中的json数据的某个属性进行操作_第1张图片
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

查询结果
sql语句对数据库中的json数据的某个属性进行操作_第2张图片

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

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

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

对比结果(查询出了一条数据,第二条数据中parentDeptId也是101,但是我们把第一个参数精确到了deptId所以就查询不到了)
sql语句对数据库中的json数据的某个属性进行操作_第3张图片

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

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

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

sql语句对数据库中的json数据的某个属性进行操作_第4张图片
第二条数据的parentDeptId为101,我们仅需修改范围即可实现json数组中查找
查找范围扩大到dep包含的json数组中全部数据

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

小伙伴们,可以根据自己需求手动修改;
sql语句对数据库中的json数据的某个属性进行操作_第5张图片

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

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

你可能感兴趣的:(java,mysql,json,mysql,sql,json)