mysql怎么解析json字符串_mysql解析json字符串
很多时候,我们需要在sql里面直接解析json字符串。这里针对mysql5.7版本的分水岭进行区分。
1.对于mysql5.7以上版本
使用mysql的内置函数JSON_EXTRACT(column, '$.key'),这个函数有两个参数,第一个参数column代表json列的列名;第二个参数key代表json字符串中的某一个key。
SELECT JSON_EXTRACT('{"priceTag":"员工/合作关键人","priceDiscount":"90"}', '$.priceDiscount') AS '定价折扣';
对于简单的json字符串肯定是可以解析成功,但是对于嵌套数组的没试过。
2.对于mysql5.7以下版本
只能充分发挥已有函数的功能去截取实现,无论实现方式是存储过程还是简单的sql语句,其原理都是一样的。
第一步,将所有的花括号的闭括号'}'替换成英文逗号',';第二步,获取key的坐标keyIndex和长度keyLength;第三步,获取以key为起点,第一个英文逗号','的坐标symbolIndex;第四步,使用substring截取字符串SUBSTRING(targetJsonStr, keyIndex + keyLength, symbolIndex - keyIndex - keyLength);第五步,使用replace将双引号'"'替换成空字符串'',完工。
示例:从{"priceTag": "员工/合作关键人","priceDiscount": "90"}中获取priceDiscount的值。
SELECT REPLACE
(
SUBSTRING(
REPLACE('{"priceTag":"员工/合作关键人","priceDiscount":"90"}','}',','),
LOCATE('priceDiscount":',REPLACE('{"priceTag":"员工/合作关键人","priceDiscount":"90"}','}',','))+CHAR_LENGTH('priceDiscount":'),
LOCATE(
',',
REPLACE('{"priceTag":"员工/合作关键人","priceDiscount":"90"}','}',','),
LOCATE('priceDiscount":',REPLACE('{"priceTag":"员工/合作关键人","priceDiscount":"90"}','}',',')) + CHAR_LENGTH('priceDiscount":')
) - (LOCATE('priceDiscount":',REPLACE('{"priceTag":"员工/合作关键人","priceDiscount":"90"}','}',',')) + CHAR_LENGTH('priceDiscount":'))
),'"',''
) AS '定价折扣';
mysql怎么解析json字符串_mysql解析json字符串相关推荐
- mysql更新字符串中某个字符串_mysql更新某个字符串字段的部分内容
如果现在需要Mysql更新字段重部分数据,而不是全部数据,应该采用何种方法呢?下面介绍了两种情况下Mysql更新字段中部分数据的方法,供您参考. Mysql更新字段中部分数据第一种情况: update ...
- mysql解析json字符串_Mysql解析json字符串/数组
1 Mysql解析json字符串 解决方法:JSON_EXTRACT(原字段,'$.json字段名') 执行SQL: SELECT JSON_EXTRACT( t.result,'$.row'), J ...
- mysql+json插入_MySQL对JSON数据的增删改查
MySQL从5.7版本开始就支持JSON格式的数据,操作用起来挺方便的. 建表 在新建表时字段类型可以直接设置为json类型,比如我们创建一张表: CREATE TABLE `test_user` ( ...
- mysql源码如何解析where字句_MySQL解析器源码分析--对select语句中子查询处理逻辑的分析(一)...
背景 一个最简单的select语句包含select子句.from子句.where子句等,这些子句都不包含子查询(subselect),也没有union操作.而复杂的select语句包含select子句 ...
- mysql o转数字排序_mysql学习,字符串转成数字并比较排序
SUBSTRING_INDEX([列名],[分割符],[段数]) 列名:要分割列里内容的列名 分割符:用来切割的符号 段数:切割后取的长度 以下示例说明参数: 表info 列c_code 值 1-10 ...
- mysql 分组 字符串_MySQL查询以字符串字段中的数字字符对行进行分组?
为此,您可以在+运算符的帮助下将0与字符串字段连接起来.这里的场景就像我们需要从字符串字段" 9844Bob "中获取数字" 9844 ". 让我们首先创建一个 ...
- mysql中逗号前的字符串_MySql逗号拼接字符串查询的两种方法
下面两个函数的使用和FIND_IN_SET一样,使用时只需要把FIND_IN_SET换成FIND_PART_IN_SET或FIND_ALL_PART_IN_SET 例如某字段里是为1,2,3,4,5 ...
- mysql 字符转换函数是_MySQL日期和字符串转换函数
Mysql中to_char()和str_to_date()函数 转载路径:https://blog.csdn.net/ricardo_mli/article/details/80217512 1.字符 ...
- mysql截取前几个字符串_MySql中截取字符串中的某几个字符
--先创建一个取json数据的方法 CREATE function `get_json_data`( jsonstr VARCHAR(100), keystr VARCHAR(20) ) RETURN ...
- mysql 存储过程 长字符串_mysql存储过程瓜分字符串
mysql存储过程分割字符串 DROP PROCEDURE IF EXISTS split_string; CREATE PROCEDURE split_string(IN to_split VARC ...
最新文章
- 最全面的百度地图JavaScript离线版开发
- Ubuntu通过windows代理上网
- C#LeetCode刷题之#674-最长连续递增序列( Longest Continuous Increasing Subsequence)
- 1095 解码PAT准考证 (25 point(s)) - PAT乙级真题
- 想交换机高级篇的朋友们,你们有福啦
- Vue——B站黑马程序员教程
- 3、FFmpeg 过滤器
- 计算机网络——常用的网络命令
- HTML 网页自动刷新
- [转载]提升你幽默感的100句经典短语
- 彻底搞懂MySQL的索引
- Salesforce系列(十):Salesforce Schedule cron定时执行方法!
- 05 Java 虚拟机.md
- 【产品集】什么是堡垒机?为什么需要堡垒机
- C语言对于char*和char[]的理解
- 送一朵玫瑰花给女朋友
- mysql分布式事务wcf_[转载]WCF系列_分布式事务(下)
- 你真的了解机器学习、人工智能、统计建模吗?
- 生物信息学技术在罕见病研究中的应用
- 2011年度全球50个最佳网站