mysql(5.6及以下)解析json
2024-08-31 07:34:26
转自:https://blog.csdn.net/weixin_33979203/article/details/87621768
#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
最新文章
- bzoj1191--匈牙利算法
- css之颜色值、单位
- ResultSet相关ResultSetMetaData详细
- JDBC连接数据库演示
- C# PPT 查找替换
- javascrit2.0完全参考手册(第二版) 第2章第1节 基本定义
- Resources in Visual Tracking(转载)
- UM_第三方登录
- SpringMVC+Apache Shiro+JPA(hibernate)案例教学(二)基于SpringMVC+Shiro的用户登录权限验证
- Spring Boot 整合Quartz定时器
- gitlab搭建,结合pycharm和vs2015配置用于开发python和c++
- C++ this指针
- 梯度提升决策树(GBDT)
- 这20个Docker Command,有几个是你会的?
- 【计算机视觉】seetaFace
- FZU1759(SummerTrainingDay04-B 欧拉降幂公式)
- 使用基于 PHP 的开源软件 YOURLS 搭建短链接地址服务
- IOS UI-Button按钮
- 添加mysamba
- Windoows窗口程序三
热门文章
- 【leetcode】1229.Meeting Scheduler
- 【leetcode】1185. Day of the Week
- asp.net ajax传递Json给aspx.cs后台 webmethod方法传递json
- HDU1237--简单计算器(栈的应用)
- java7和java8新特性
- Python 使用Qt进行开发(二)
- 异步任务分发模块Celery
- oracle备份和还原
- 旋转数组 空间复杂度为O(1) 的2 种方法 + 1种空间复杂度O(n)
- 阶段3 1.Mybatis_11.Mybatis的缓存_1 今日课程安排