mysql(5.6及以下)解析json的方法实例详解
mysql(5.6及以下)解析json
#json解析函数 DELIMITER$$ DROPFUNCTIONIFEXISTS`json_extract_c`$$ CREATEFUNCTION`json_extract_c`( detailsTEXT, required_fieldVARCHAR(255) )RETURNSTEXTCHARSETlatin1 BEGIN SETdetails=SUBSTRING_INDEX(details,"{",-1); SETdetails=SUBSTRING_INDEX(details,"}",1); RETURNTRIM( BOTH'"'FROMSUBSTRING_INDEX( SUBSTRING_INDEX( SUBSTRING_INDEX( details, CONCAT( '"', SUBSTRING_INDEX(required_field,'$.',-1), '":' ), -1 ), ',"', 1 ), ':', -1 ) ); END$$ DELIMITER; example: selectjson_extract_c(json,"$.totalDays"),jsonfromitemlimit100;
自测
CREATETABLE`json_test`( `id`int(11)DEFAULTNULL, `person_desc`textCOLLATEutf8mb4_unicode_ci )ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci; insertINTOjson_testvalues(2,'{"firstName":"Sergei","lastName":"Rachmaninoff","instrument":"piano"}'); SELECTid,json_extract_c(person_desc,'$.lastName')as"keys"FROMjson_test;
改进,再找不到key,返回''值,之前的是在找不到的情况下,查找到第一的值。
CREATEDEFINER=`zhangfen`@`%`FUNCTION`json_extract_c`( detailsTEXT, required_fieldVARCHAR(255) )RETURNStextCHARSETlatin1 BEGIN SETdetails=SUBSTRING_INDEX(details,"{",-1); SETdetails=SUBSTRING_INDEX(details,"}",1); RETURNTRIM( BOTH'"'FROMSUBSTRING_INDEX( SUBSTRING_INDEX( SUBSTRING_INDEX( CONCAT('"":"",',details), CONCAT( '"', SUBSTRING_INDEX(required_field,'$.',-1), '":' ), -1 ), ',"', 1 ), ':', -1 ) ); END
总结
以上所述是小编给大家介绍的mysql(5.6及以下)解析json的方法实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!