转自: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

最新文章

  1. bzoj1191--匈牙利算法
  2. css之颜色值、单位
  3. ResultSet相关ResultSetMetaData详细
  4. JDBC连接数据库演示
  5. C# PPT 查找替换
  6. javascrit2.0完全参考手册(第二版) 第2章第1节 基本定义
  7. Resources in Visual Tracking(转载)
  8. UM_第三方登录
  9. SpringMVC+Apache Shiro+JPA(hibernate)案例教学(二)基于SpringMVC+Shiro的用户登录权限验证
  10. Spring Boot 整合Quartz定时器
  11. gitlab搭建,结合pycharm和vs2015配置用于开发python和c++
  12. C++ this指针
  13. 梯度提升决策树(GBDT)
  14. 这20个Docker Command,有几个是你会的?
  15. 【计算机视觉】seetaFace
  16. FZU1759(SummerTrainingDay04-B 欧拉降幂公式)
  17. 使用基于 PHP 的开源软件 YOURLS 搭建短链接地址服务
  18. IOS UI-Button按钮
  19. 添加mysamba
  20. Windoows窗口程序三

热门文章

  1. 【leetcode】1229.Meeting Scheduler
  2. 【leetcode】1185. Day of the Week
  3. asp.net ajax传递Json给aspx.cs后台 webmethod方法传递json
  4. HDU1237--简单计算器(栈的应用)
  5. java7和java8新特性
  6. Python 使用Qt进行开发(二)
  7. 异步任务分发模块Celery
  8. oracle备份和还原
  9. 旋转数组 空间复杂度为O(1) 的2 种方法 + 1种空间复杂度O(n)
  10. 阶段3 1.Mybatis_11.Mybatis的缓存_1 今日课程安排