Mysql 直接查詢存儲(chǔ)的Json字符串中的數(shù)據(jù)
我們平時(shí)使用mysql,出于項(xiàng)目需求,可能需要直接將Java對(duì)象或者一個(gè)大json,直接存到表中的某個(gè)字段中;使用的時(shí)候再查出來,反序列化到對(duì)象或者一個(gè)Map中,方便我們操作;
大多時(shí)候,我們可能并不需要所有的數(shù)據(jù),只想使用這個(gè)對(duì)象或者json中的某一個(gè)值,來做邏輯判斷而已
那我們可以這樣做,例如:原來我們需要查出某個(gè)字段的數(shù)據(jù),然后反序列化成對(duì)象再調(diào)用其中的一個(gè)屬性
SELECT content FROM table_name WHERE id = 32;
查詢結(jié)果:
列名:content
結(jié)果:{"fieldType":"SELECT","selectType":"SINGLE","options":["本科","研究生","碩士"]}
TableNameContent content = JsonUtils.jsonNode2Type(TableNameContent.class, TableName.getContent()); if (SELECT.equals(content.getFieldType())){ //bala... bala... }
這樣做,其實(shí)也沒啥毛病,那么其實(shí)還可以換一種其他的方式;
我們可以使用使用 json字段名->’$.json屬性’ 進(jìn)行查詢 直接在content這個(gè)列里查出json后,使用mysql自帶的函數(shù),直接查詢出我們想要的某一個(gè)字段;
SELECT content, REPLACE(json_extract(content,'$.fieldType'),'"','') fieldType FROM table_name WHERE id = 32; 或 SELECT content, REPLACE(content->'$.fieldType','"','') fieldType FROM table_name WHERE id = 32;
查詢結(jié)果:
列名:content fieldType
結(jié)果:{"fieldType":"SELECT","selectType":"SINGLE","options":["本科","研究生","碩士"]} SELECT
那我們就可以直接拿到這個(gè)字段的值來進(jìn)行做我們想做的事情了。直接查出來的數(shù)據(jù)要是原來存的時(shí)候就帶有雙引號(hào),那么查出來的也是帶雙引號(hào)的,可以使用REPLACE函數(shù)替換一下就好了。
當(dāng)然還有更多的用法:
1 --> SELECT content FROM table_name WHERE content->'$.fieldType'='SELECT'; {"fieldType":"SELECT","selectType":"MULTIPLE","options":["選擇一","選擇二","選擇三"]} {"fieldType":"SELECT","selectType":"SINGLE","options":["2w","3w","4w","5w"]} {"fieldType":"SELECT","selectType":"SINGLE","options":["本科","研究生","碩士"]} {"fieldType":"SELECT","selectType":"SINGLE","options":["11","22","44","23"]} 2 --> SELECT content FROM sy_config_member_info WHERE content->'$.fieldType'='SELECT' AND content->'$.selectType'='MULTIPLE'; {"fieldType":"SELECT","selectType":"MULTIPLE","options":["選擇一","選擇二","選擇三"]}
當(dāng)然,這樣做的性能可能就不要指望很高了噢,謹(jǐn)慎使用哈~
到此這篇關(guān)于Mysql 直接查詢存儲(chǔ)的Json字符串中的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Mysql 直接查詢存儲(chǔ)Json內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Win7 x64安裝解壓版mysql 5.7.18 winx64出現(xiàn)服務(wù)無法啟動(dòng)問題
這篇文章主要介紹了解決Win7 x64安裝解壓版mysql 5.7.18 winx64出現(xiàn)服務(wù)無法啟動(dòng)問題,需要的朋友可以參考下2017-05-05mysql 5.7.9 winx64在windows上安裝遇到的問題
mysql5.7.9版本以上在windwos上安裝時(shí)會(huì)遇到無法啟動(dòng)但是沒有任何報(bào)錯(cuò)的問題,怎么回事呢?接下來通過本文給大家介紹mysql 5.7.9 winx64在windows上安裝遇到的問題及解決方法,需要的朋友可以參考下2016-10-10mysql中數(shù)據(jù)統(tǒng)計(jì)的技巧備忘錄
mysql是常用數(shù)據(jù)庫(kù),對(duì)于數(shù)字操作相關(guān)的東西相當(dāng)方便,這篇文章主要給大家介紹了關(guān)于mysql中數(shù)據(jù)統(tǒng)計(jì)技巧的相關(guān)資料,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-05-05mysql中drop、truncate與delete的區(qū)別詳析
對(duì)于drop、truncate和delete雖然簡(jiǎn)單,但是真要使用或者面試時(shí)候問到還是需要有一定的總結(jié),下面這篇文章主要給大家介紹了關(guān)于mysql中drop、truncate與delete區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-03-03