mysql(5.6及以下)解析json的方法實例詳解
mysql(5.6及以下)解析json
#json解析函數(shù) 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
總結(jié)
以上所述是小編給大家介紹的mysql(5.6及以下)解析json的方法實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
MySQL表的內(nèi)外連接和視圖使用實戰(zhàn)練習(xí)
這篇文章主要給大家介紹了關(guān)于MySQL表的內(nèi)外連接和視圖使用的相關(guān)資料,MySQL的內(nèi)外連接查詢是用于將兩個或多個表中的數(shù)據(jù)進行關(guān)聯(lián)查詢的一種方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-01-01mysql指定某行或者某列的排序?qū)崿F(xiàn)方法
這篇文章主要介紹了mysql指定某行或者某列的排序,需要的朋友可以參考下2017-05-05MySQL中having和where的區(qū)別及應(yīng)用詳解
這篇文章主要給大家詳細介紹了MySQL中having和where的區(qū)別以及他們的使用方法,文中有相關(guān)的代碼示例,具有一定的參考價值,需要的朋友可以參考下2023-06-06關(guān)于mysql 8.x 中insert ignore的性能問題
這篇文章主要介紹了關(guān)于mysql 8.x 中insert ignore的性能問題,具有很好的參考價值,希望對大家有所幫助。2022-08-08安裝MySQL 5后無法啟動(不能Start service)解決方法小結(jié)
有時候我們在安裝mysql軟件時,卻無法啟動,或服務(wù)器安全設(shè)置以后都可能導(dǎo)致mysql無法運行2012-07-07Ubuntu下mysql與mysql workbench安裝教程
這篇文章主要為大家詳細介紹了Ubuntu下mysql與mysql workbench的安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04Mysql外鍵設(shè)置中的CASCADE、NO ACTION、RESTRICT、SET NULL
本文主要介紹了Mysql外鍵設(shè)置中的CASCADE、NO ACTION、RESTRICT、SET NULL,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07解決遠程連接mysql很慢的方法(mysql_connect 打開連接慢)
有次同事提出開發(fā)使用的mysql數(shù)據(jù)庫連接很慢,因為我們的mysql開發(fā)數(shù)據(jù)庫是單獨一臺機器部署的,所以認(rèn)為可能是網(wǎng)絡(luò)連接問題導(dǎo)致的。2011-07-07