mysql 解析json字符串、数组字符串、json数组字符串

背景:

笔者使用mysql 5.7进行了一次json字符串的解析,因为一直在搞大数据相关的数据库、olap等,太久没有用mysql5.x的版本,一些函数已经不知道支不支持,我的同事建议我使用like、rlike模糊匹配的方式,身为数据人我不太喜欢用这种手段,因为他们比较低效。于是我想这里总结一下,做一下备忘,希望也对大家有帮助。

json字符串解析

MySQL解析JSON字符串,可以使用MySQL的JSON函数。

使用JSON_EXTRACT函数来提取JSON字符串中的特定值。例如:

SELECT JSON_EXTRACT('{"name": "Tom", "age": 18}', '$.name');

在这里插入图片描述

数组字符串解析

同样我们还是使用JSON_EXTRACT函数,解析如下数据

'[1,[2],3]'

我们实现将数组字符串中第二个元素解析出来,第二个元素的下标是1。于是代码如下:

SELECT JSON_EXTRACT(JSON_EXTRACT('[1,[2],3]', '$[1]'), '$[*]') AS result;

在这里插入图片描述

JSON数组字符串解析

基于以上我们对,json字符串和数组的解析,以此我们发挥一下使用JSON_EXTRACT进行JSON数组字符串解析,我们试着解析下边的JSON数组字符串:

'[{"ruleCode": "active_default", "ruleName": "默认激活规则", "necessary": 0, "ruleValue": {"level": "app", "timesLimit": 1}, "activateType": "active", "triggerEvent": ["boot", "register", "login"], "ruleDescription": "基础激活规则, 当用户启动app,注册,登录的时候触发检查回传条件,回传次数1次, 规则级别 app", "openConfiguration": 0}, {"ruleCode": "active_pay_in_active_day", "ruleName": "归因当天下单上报规则", "necessary": 0, "ruleValue": {"level": "app", "funnel": "4/1", "timesLimit": 1, "afterActiveTime": 0, "afterActiveTimeUnit": "day"}, "activateType": "active_pay", "triggerEvent": ["recharge", "create_vip"], "ruleDescription": "自然日上报首单规则, 当用户发生订单支付的时候触发检查回传条件, 用户必须是在激活当天产生的订单才上报,并且仅上报1次", "openConfiguration": 0}]'

我们实现下代码:

SELECT JSON_EXTRACT('[{"ruleCode": "active_default", "ruleName": "默认激活规则", "necessary": 0, "ruleValue": {"level": "app", "timesLimit": 1}, "activateType": "active", "triggerEvent": ["boot", "register", "login"], "ruleDescription": "基础激活规则, 当用户启动app,注册,登录的时候触发检查回传条件,回传次数1次, 规则级别 app", "openConfiguration": 0}, {"ruleCode": "active_pay_in_active_day", "ruleName": "归因当天下单上报规则", "necessary": 0, "ruleValue": {"level": "app", "funnel": "4/1", "timesLimit": 1, "afterActiveTime": 0, "afterActiveTimeUnit": "day"}, "activateType": "active_pay", "triggerEvent": ["recharge", "create_vip"], "ruleDescription": "自然日上报首单规则, 当用户发生订单支付的时候触发检查回传条件, 用户必须是在激活当天产生的订单才上报,并且仅上报1次", "openConfiguration": 0}]','$[1].ruleValue.funnel');

在这里插入图片描述

总结

这是目前笔者使用JSON_EXTRACT函数的一些浅见,欢迎大家在评论区,交流经验和问题

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地增

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值