使用sql语句解析json字符串

发现当前数据库对字符串的解析都是使用存储过程,但是大部分公司不建议使用存过,无奈之下写了如下的解析方式:

 

原始数据如下图:

经过数据分析发现,每个键值对的分隔符是","(两个引号加一个英文逗号)

  1. 数据进行第一步去除数值中两侧{},变更","为~(下面在如果使用的是regexp_substr()函数可不进行变更,使用变更的主要原因是下面的strsplit()只能使用一个字符varchar(1),是规定还是写的不对,目前不是很清楚),去除多余双引号,得到数值如下:

然后对数据进行行转列

这里存在两种方式,一种是json字符串每个键值对的位置比较稳定,可以使用函数regexp_substr(sms_cntt,'[^~]+',1,1)获取到的值如下:

使用replace()函数替换掉字段名和“:”就是你想要的值

另一种方式是使用strsplit()函数,如下:

该处理获取到的值会在同一列进行展示,需根据模糊匹配已知的字段名加“:”获取相应的键值对,最后利用replace()函数替换掉字段名和“:”就是你想要的值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值