mysql(5.6及以下)解析json的方法實(shí)例詳解
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;
自測(cè)
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;
改進(jìn),再找不到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的方法實(shí)例詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
MySQL 創(chuàng)建主鍵,外鍵和復(fù)合主鍵的語句
MySQL 創(chuàng)建主鍵,外鍵和復(fù)合主鍵的方法,需要的朋友可以參考下。2009-12-12
利用MySQL?Shell安裝部署MGR集群的詳細(xì)過程
MySQL?Shell是一個(gè)客戶端工具,可用于方便管理和操作MySQL,支持SQL、JavaScript、Python等多種語言,也包括完善的API,本文介紹如何利用MySQL?Shell?+?GreatSQL?8.0.25構(gòu)建一個(gè)三節(jié)點(diǎn)的MGR集群,感興趣的朋友一起看看吧2022-02-02
MySQL數(shù)據(jù)庫中表的查詢實(shí)例(單表和多表)
查詢數(shù)據(jù)是數(shù)據(jù)庫操作中最常用,也是最重要的操作,下面這篇文章主要介紹了MySQL數(shù)據(jù)庫中表的查詢的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03
mysql修改數(shù)據(jù)庫默認(rèn)路徑無法啟動(dòng)問題的解決
這篇文章主要給大家介紹了關(guān)于mysql修改數(shù)據(jù)庫默認(rèn)路徑無法啟動(dòng)問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
MYSQL5.6.33數(shù)據(jù)庫主從(Master/Slave)同步安裝與配置詳解(Master-Linux Slave-w
這篇文章主要為大家詳細(xì)介紹了MYSQL5.6.33數(shù)據(jù)庫主從(Master/Slave)同步安裝與配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
MySQL數(shù)據(jù)庫通過Binlog恢復(fù)數(shù)據(jù)的詳細(xì)步驟
MySQL的binlog日志是MySQL日志中非常重要的一種日志,記錄了數(shù)據(jù)庫所有的DML操作,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫通過Binlog恢復(fù)數(shù)據(jù)的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
mysql存儲(chǔ)過程事務(wù)管理簡(jiǎn)析
本文將提供了一個(gè)絕佳的機(jī)制來定義、封裝和管理事務(wù),需要的朋友可以參考下2012-11-11
Mysql日期格式以及內(nèi)置日期函數(shù)用法詳解
MySQL中有多種數(shù)據(jù)類型可以用于日期和時(shí)間的表示,這篇文章主要給大家介紹了關(guān)于Mysql日期格式以及內(nèi)置日期函數(shù)用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05

