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

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

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

使用replace()函数替换掉字段名和“:”就是你想要的值
另一种方式是使用strsplit()函数,如下:

该处理获取到的值会在同一列进行展示,需根据模糊匹配已知的字段名加“:”获取相应的键值对,最后利用replace()函数替换掉字段名和“:”就是你想要的值
版权声明:本文为u010615567原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。