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

数据格式

两行测试数据
字段名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新版本安装版下载地址
友情链接

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Qt,我们可以使用QJsonObject和QJsonArray来处理JSON数据。为了将JSON数据保存到后台SQL数据库,我们可以执行以下步骤: 1. 首先,我们需要将JSON数据解析为QJsonObject或QJsonArray对象。可以使用QJsonDocument::fromJson()方法将JSON数据转换为QJsonDocument对象,然后使用toObject()或toArray()方法将其转换为QJsonObject或QJsonArray对象。 2. 接下来,我们需要连接到SQL数据库。可以使用Qt提供的QSqlDatabase类来实现连接。使用QSqlDatabase::addDatabase()方法创建数据库连接,并设置相应的连接参数,如数据库驱动、主机名、用户名和密码。 3. 建立连接后,我们可以执行SQL查询来保存JSON数据数据库。使用QSqlQuery类的exec()方法执行查询。可以使用INSERT语句插入JSON数据数据库的表。根据JSON数据的结构,我们可以使用循环来遍历QJsonObject或QJsonArray数据,并使用bindValue()方法来绑定参数。 4. 最后,记得关闭数据库连接,以避免资源泄漏。通过调用QSqlDatabase的close()方法来关闭连接。 整体来说,这是一个基本的步骤示例。具体的实现可能会因JSON数据的结构和数据库的模式而有所不同。此外,还需要处理错误和异常情况,例如检查数据库连接是否成功、查询是否执行成功等。 注意:此回答只提供了一种概念性的解决方案,并未提供具体的实现代码。实际开发,需要根据具体情况进行进一步研究和编码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值