mysql(5.6及以下)解析json
程序员文章站
2022-08-29 09:52:33
转自:https://blog.csdn.net/weixin_33979203/article/details/87621768 改进,再找不到key,返回''值,之前的是在找不到的情况下,查找到第一的值。 ......
转自:
#json解析函数
delimiter $$
drop function if exists `json_extract_c`$$
create function `json_extract_c`(
details text,
required_field varchar (255)
) returns text charset latin1
begin
set details = substring_index(details, "{", -1);
set details = substring_index(details, "}", 1);
return trim(
both '"' from substring_index(
substring_index(
substring_index(
details,
concat(
'"',
substring_index(required_field,'$.', -1),
'":'
),
-1
),
',"',
1
),
':',
-1
)
) ;
end$$
delimiter ;
example:
select json_extract_c(json, "$.totaldays"), json from item limit 100;
自测
create table `json_test` (
`id` int(11) default null,
`person_desc` text collate utf8mb4_unicode_ci
) engine=innodb default charset=utf8mb4 collate=utf8mb4_unicode_ci;
insert into json_test values(2,'{"firstname":"sergei","lastname":"rachmaninoff","instrument":"piano"}');
select id,json_extract_c(person_desc,'$.lastname') as "keys" from json_test;
改进,再找不到key,返回''值,之前的是在找不到的情况下,查找到第一的值。
create definer=`zhangfen`@`%` function `json_extract_c`( details text, required_field varchar (255) ) returns text charset latin1 begin set details = substring_index(details, "{", -1); set details = substring_index(details, "}", 1); return trim( both '"' from substring_index( substring_index( substring_index( concat('"":"",',details), concat( '"', substring_index(required_field,'$.', -1), '":' ), -1 ), ',"', 1 ), ':', -1 ) ) ; end
上一篇: kafka修改topic副本数
推荐阅读
-
比较Ajax的三种实现及JSON解析
-
mysql5.6及以下版本如何查询数据库里的json
-
C#解析json字符串总是多出双引号的原因分析及解决办法
-
mysql(5.6及以下)解析json的方法实例详解
-
mysql(5.6及以下)解析json
-
linux中安装JDK linux中安装Tomcat linux中安装Mysql 及故障解析 linux系统安装redis
-
hive中json字符串(get_json_object与json_tuple)及url解析(parse_url)
-
浅谈JSONObject的使用及示例代码(JSON解析)
-
Mysql join联表及id自增实例解析
-
Mysql脏页flush及收缩表空间原理解析