mysql(5.6及以下)解析json的方法实例详解

 更新时间:2019年07月18日 13:40:39   作者:zhangfen1991  
这篇文章主要介绍了mysql(5.6及以下)解析json的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下

mysql(5.6及以下)解析json

#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

总结

以上所述是小编给大家介绍的mysql(5.6及以下)解析json的方法实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • MySQL 驱动中虚引用 GC 耗时优化与源码分析

    MySQL 驱动中虚引用 GC 耗时优化与源码分析

    这篇文章主要为大家介绍了MySQL 驱动中虚引用 GC 耗时优化与源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 详解远程连接Mysql数据库的问题(ERROR 2003 (HY000))

    详解远程连接Mysql数据库的问题(ERROR 2003 (HY000))

    本篇文章是对远程连接Mysql数据库的问题进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MySQL事务(transaction)看这篇就足够了

    MySQL事务(transaction)看这篇就足够了

    M事务的实现是基于数据库的存储引擎,不同的存储引擎对事务的支持程度不一样,下面这篇文章主要给大家介绍了关于MySQL事务(transaction)的相关资料,需要的朋友可以参考下
    2022-11-11
  • MySQL全局共享内存介绍

    MySQL全局共享内存介绍

    这篇文章主要介绍了MySQL全局共享内存介绍,全局共享内存则主要是 MySQL Instance(mysqld进程)以及底层存储引擎用来暂存各种全局运算及可共享的暂存信息,如存储查询缓存的 Query Cache,缓存连接线程的 Thread Cache等等,需要的朋友可以参考下
    2014-12-12
  • mysql数据库链接失败常见问题及解决

    mysql数据库链接失败常见问题及解决

    这篇文章主要介绍了mysql数据库链接失败常见问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • mysql服务启动不了解决方案

    mysql服务启动不了解决方案

    最近在Windows 2003上的MySQL出现过多次正常运行时无法连接数据库故障,现象是无法连接数据库,也无法停止MySQL或重启MYSQL,由于每次都是草草尝试各种方法搞定即可本文将详细介绍解决方法
    2012-11-11
  • MySQL 8.0.18使用clone plugin重建MGR的实现

    MySQL 8.0.18使用clone plugin重建MGR的实现

    这篇文章主要介绍了MySQL 8.0.18使用clone plugin重建MGR的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 详解MySQL实时同步到Oracle解决方案

    详解MySQL实时同步到Oracle解决方案

    这篇文章主要介绍了详解MySQL实时同步到Oracle解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • RedHat下MySQL的基本使用方法分享

    RedHat下MySQL的基本使用方法分享

    RedHat 下MySQL安装,简单设置以用基本的使用方法,需要的朋友可以参考下。
    2011-08-08
  • MySQL数据库数据视图

    MySQL数据库数据视图

    这篇文章主要介绍了MySQL数据库数据视图,视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08

最新评论