Mysql 直接查詢存儲的Json字符串中的數(shù)據(jù)
我們平時使用mysql,出于項目需求,可能需要直接將Java對象或者一個大json,直接存到表中的某個字段中;使用的時候再查出來,反序列化到對象或者一個Map中,方便我們操作;
大多時候,我們可能并不需要所有的數(shù)據(jù),只想使用這個對象或者json中的某一個值,來做邏輯判斷而已
那我們可以這樣做,例如:原來我們需要查出某個字段的數(shù)據(jù),然后反序列化成對象再調(diào)用其中的一個屬性
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... }
這樣做,其實也沒啥毛病,那么其實還可以換一種其他的方式;
我們可以使用使用 json字段名->’$.json屬性’ 進(jìn)行查詢 直接在content這個列里查出json后,使用mysql自帶的函數(shù),直接查詢出我們想要的某一個字段;
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
那我們就可以直接拿到這個字段的值來進(jìn)行做我們想做的事情了。直接查出來的數(shù)據(jù)要是原來存的時候就帶有雙引號,那么查出來的也是帶雙引號的,可以使用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 直接查詢存儲的Json字符串中的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Mysql 直接查詢存儲Json內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Win7 x64安裝解壓版mysql 5.7.18 winx64出現(xiàn)服務(wù)無法啟動問題
這篇文章主要介紹了解決Win7 x64安裝解壓版mysql 5.7.18 winx64出現(xiàn)服務(wù)無法啟動問題,需要的朋友可以參考下2017-05-05mysql 5.7.9 winx64在windows上安裝遇到的問題
mysql5.7.9版本以上在windwos上安裝時會遇到無法啟動但是沒有任何報錯的問題,怎么回事呢?接下來通過本文給大家介紹mysql 5.7.9 winx64在windows上安裝遇到的問題及解決方法,需要的朋友可以參考下2016-10-10mysql中數(shù)據(jù)統(tǒng)計的技巧備忘錄
mysql是常用數(shù)據(jù)庫,對于數(shù)字操作相關(guān)的東西相當(dāng)方便,這篇文章主要給大家介紹了關(guān)于mysql中數(shù)據(jù)統(tǒng)計技巧的相關(guān)資料,非常具有實用價值,需要的朋友可以參考下2018-05-05mysql中drop、truncate與delete的區(qū)別詳析
對于drop、truncate和delete雖然簡單,但是真要使用或者面試時候問到還是需要有一定的總結(jié),下面這篇文章主要給大家介紹了關(guān)于mysql中drop、truncate與delete區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-03-03