mysql(5.6及以下)解析json的方法实例详解
吾爱主题
阅读:130
2024-04-05 14:22:03
评论:0
?
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.作者投稿可能会经我们编辑修改或补充。