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

吾爱主题 阅读:130 2024-04-05 14:22:03 评论:0

mysql(5.6及以下)解析json

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #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;

自测

?
1 2 3 4 5 6 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,返回''值,之前的是在找不到的情况下,查找到第一的值。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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的方法实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

原文链接:https://www.cnblogs.com/Richard2014/archive/2019/07/18/11205027.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容