mysql全面解析json/數(shù)組
mysql解析json數(shù)組
mysql在5.7開(kāi)始支持json解析了 也可以解析數(shù)組哦!
直接上demo
SELECT Substr(col, 2, Length(col) - 2), Length(col) FROM (SELECT Json_extract(Json_extract(Json_extract(state, "$.tpl"),"$.items" ), "$[0].url") AS col FROM page ORDER BY id DESC LIMIT 100) t;
JSON_EXTRACT可以解析sql , tpl就是你json的key值
如果是數(shù)組,用$[*].url 或者 $[0].url 獲取全部的value 或者某個(gè)下標(biāo)的url
下面這個(gè)demo可以直接復(fù)制到sql運(yùn)行
select JSON_EXTRACT(JSON_EXTRACT(JSON_EXTRACT('{"tpl":{"items":[{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FiZ0OtkhTZoD7fOtkp55SnuLGiKu.png?imageView2/2/w/750","id":1542348252537},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FlR1VDQWEzD406NosLFrJUez4g_X.png?imageView2/2/w/750","id":1542348263477},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FhMuYkWvnoMbv8I1dlQbm1KaX5Kn.png?imageView2/2/w/750","id":1542348269599},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FlgR4IUNElPbcgjN2re_9A8jX30v.png?imageView2/2/w/750","id":1542348276124},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FpXF8ETHxU8aqriiKbsYDjnu2Xd5.png?imageView2/2/w/750","id":1542348282561},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FkUz5m7Jd6kE2slSyreDucozc3XH.png?imageView2/2/w/750","id":1542348288150,"link":"http://www.baidu.com"}],"bottomItems":[],"title":"demo2","description":"","wxLogo":"","bodyStyleInline":{},"bg":"","bgType":"","bottomStyleInline":{},"bottomBg":"","bottomBgType":"","uuid":"aaef8dfe-256a-4559-aec9-95d1fcdcf830","activeItemsName":"items","activeImgType":"","authInfo":{"role_list":[{"name":"test","access_key_list":[]},{"name":"審核人員","access_key_list":[]}],"city_list":[],"userId":3108779,"userName":"zhangyusheng","email":"zhangyusheng@xxx.com","mobile":"123123","trueName":"張昱升","isEmployee":true}}}', "$.tpl"), "$.items"), "$[0].url");
我們來(lái)分析一下
原始json為
{ "tpl":{ "items":[ { "type":"image", "config":{ "expandable":true, "linkAble":true }, "url":"https://fs.esf.fangdd.net/test/FiZ0OtkhTZoD7fOtkp55SnuLGiKu.png?imageView2/2/w/750", "id":1542348252537 }, { "type":"image", "config":{ "expandable":true, "linkAble":true }, "url":"https://fs.esf.fangdd.net/test/FlR1VDQWEzD406NosLFrJUez4g_X.png?imageView2/2/w/750", "id":1542348263477 }, { "type":"image", "config":{ "expandable":true, "linkAble":true }, "url":"https://fs.esf.fangdd.net/test/FhMuYkWvnoMbv8I1dlQbm1KaX5Kn.png?imageView2/2/w/750", "id":1542348269599 }, { "type":"image", "config":{ "expandable":true, "linkAble":true }, "url":"https://fs.esf.fangdd.net/test/FlgR4IUNElPbcgjN2re_9A8jX30v.png?imageView2/2/w/750", "id":1542348276124 }, { "type":"image", "config":{ "expandable":true, "linkAble":true }, "url":"https://fs.esf.fangdd.net/test/FpXF8ETHxU8aqriiKbsYDjnu2Xd5.png?imageView2/2/w/750", "id":1542348282561 }, { "type":"image", "config":{ "expandable":true, "linkAble":true }, "url":"https://fs.esf.fangdd.net/test/FkUz5m7Jd6kE2slSyreDucozc3XH.png?imageView2/2/w/750", "id":1542348288150, "link":"http://www.baidu.com" } ], "bottomItems":[ ], "title":"demo2", "description":"", "wxLogo":"", "bodyStyleInline":{ }, "bg":"", "bgType":"", "bottomStyleInline":{ }, "bottomBg":"", "bottomBgType":"", "uuid":"aaef8dfe-256a-4559-aec9-95d1fcdcf830", "activeItemsName":"items", "activeImgType":"", "authInfo":{ "role_list":[ { "name":"test", "access_key_list":[ ] }, { "name":"審核人員", "access_key_list":[ ] } ], "city_list":[ ], "userId":3108779, "userName":"zhangyusheng", "email":"zhangyusheng@xxx.com", "mobile":"23123", "trueName":"張昱升", "isEmployee":true } } }
$.tpl
就是獲取tpl這個(gè)鍵key$[0].url
就是獲取[{url:1},{url:2}] 這個(gè)數(shù)組第一個(gè)對(duì)象的url值 也就是1
mysql json字符串解析成對(duì)應(yīng)字段
字段名 :mobile ,內(nèi)容:{"contactName":"段XX","contactJobTitle":"待確認(rèn)","contactMobile":"131XXXXXXX"}。
解決方法:JSON_EXTRACT
執(zhí)行SQL:
查詢結(jié)果:
結(jié)果帶引號(hào),并不能真正使用。
解決方法:REPLACE
執(zhí)行SQL:
查詢結(jié)果:
問(wèn)題解決。
sql語(yǔ)句:
SELECT REPLACE ( JSON_EXTRACT (mobile, '$.contactName'), '"', '' ) AS 'contactName', REPLACE ( JSON_EXTRACT (mobile, '$.contactMobile'), '"', '' ) AS 'contactMobile', REPLACE ( JSON_EXTRACT (mobile, '$.contactJobTitle'), '"', '' ) AS 'contactJobTitle' FROM cscw_client WHERE id = 'XXXXXXXXXXXXXXX'
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql臨時(shí)表用法分析【查詢結(jié)果可存在臨時(shí)表中】
這篇文章主要介紹了mysql臨時(shí)表用法,結(jié)合實(shí)例形式分析了MySQL將查詢結(jié)果存儲(chǔ)在臨時(shí)表中的相關(guān)操作技巧,需要的朋友可以參考下2019-08-08windows中同時(shí)安裝兩個(gè)不同版本的mysql數(shù)據(jù)庫(kù)
在項(xiàng)目中可能會(huì)用到多個(gè)版本的Mysql數(shù)據(jù)庫(kù),尤其是最常用的5版本的和8版本數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于windows中同時(shí)安裝兩個(gè)不同版本的mysql數(shù)據(jù)庫(kù),需要的朋友可以參考下2024-03-03MySQL的安全問(wèn)題從安裝開(kāi)始說(shuō)起
本篇文章小編為大家介紹,關(guān)于MySQL的安全問(wèn)題從安裝開(kāi)始說(shuō)起,有需要的朋友可以參考一下2013-04-04Mysql遷移到TiDB雙寫數(shù)據(jù)庫(kù)兜底方案詳解
這篇文章主要為大家介紹了Mysql遷移到TiDB雙寫數(shù)據(jù)庫(kù)兜底方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01MySQL 創(chuàng)建三張關(guān)系表實(shí)操
這篇文章主要介紹了MySQL 創(chuàng)建三張關(guān)系表實(shí)操,文章說(shuō)先創(chuàng)建學(xué)生表然后科目表和分?jǐn)?shù)表三張有著密切關(guān)系的表,下文實(shí)操分享需要的小伙伴可以參考一下2022-03-03解決出現(xiàn)secure_file_priv null的問(wèn)題
這篇文章主要介紹了解決出現(xiàn)secure_file_priv null的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03MySQL數(shù)據(jù)庫(kù)三種常用存儲(chǔ)引擎特性對(duì)比
MySQL中的數(shù)據(jù)用各種不同的技術(shù)存儲(chǔ)在文件(或內(nèi)存)中,這些技術(shù)中的每一種技術(shù)都使用不同的存儲(chǔ)機(jī)制,索引技巧,鎖定水平并且最終提供廣泛的不同功能和能力。在MySQL中將這些不同的技術(shù)及配套的相關(guān)功能稱為存儲(chǔ)引擎。2016-01-01