【Mysql】SELECT查询如何提取JSON内的字符,使用SUBSTRING_INDEX截取字符串内容

问题:显示客户级别和客户打分的内容
表名:TEST
列名:data
{"基本信息":{"客户名称":"测试","客户级别":"VIP ","审核日期":"2023-05-31","审核类型":"测试类型","审核单号":"TEST230531010","应审主导部门/人":["测试公司:admin"],"创建人":3,"创建日期":"2023-05-31 20:11:17","状态":"完成"},"综合反馈":{"审核项总数":"22","致命不符":1,"严重不符":1,"轻微不符":10,"建议项":10,"不符项小计":22,"要求回复日期":"","客户打分":"100","审核结果":"合格","已完成不符项":"","全部完成日期":"2023-05-31 20:11:17","自评打分":"","意见反馈":"通过","创建日期":"2023-05-31 20:11:17"},"不符项列表":[],"审核":{"审核部门":[],"审核人":"","审核意见":"","审核日期":"","批准部门":[],"批准人":" ","批准意见":" ","批准日期":"2023-05-31 20:11:17"},"驳回":[]}

解决方法:使用SUBSTRING_INDEX截取字符串内容。SUBSTRING_INDEX(str,delim,count),str代表列名,delim代表分隔符,count表示分隔符的位数,count为正数是从左向右取,count为负数时从右向左取。

我举几个例子说明count为正数和负数的区别

例1(count为正数):

SELECT SUBSTRING_INDEX(data,'","',2) as 例1查询结果
FROM TEST
例1查询结果
{"基本信息":{"客户名称":"测试","客户级别":"VIP

例2(count为负数):

SELECT SUBSTRING_INDEX(data,'","',-1) as 例2查询结果
FROM TEST
例2查询结果
批准日期":"2023-05-31 20:11:17"},"驳回":[]}

我们了解了SUBSTRING_INDEX(str,delim,count)的使用方法了,那么问题就很简单了。

问题解决语句:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(data,'","',2),'"',-1) as 客户等级,
SUBSTRING_INDEX(SUBSTRING_INDEX(data,'","审核结果',1),'"',-1) as 客户打分
FROM TEST

问题解决结果:

客户等级客户打分
VIP100

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值