MySQL對(duì)JSON數(shù)據(jù)進(jìn)行查詢實(shí)例代碼
MySQL根據(jù)JSON字段的內(nèi)容檢索查詢數(shù)據(jù)
1、使用 字段 -> ‘$.json’ 屬性’ 進(jìn)行查詢條件
以下這兩種會(huì)快很多,可以自己測(cè)試
2、使用 json_extract 函數(shù)查詢,json_extract(字段, “$.json屬性”)
3、根據(jù)json數(shù)組查詢,用 JSON_CONTAINS (字段, JSON_OBJECT(‘json屬性’, “內(nèi)容”))
MySQL5.7以上支持JSON的操作,以及增加了JSON存儲(chǔ)類型
般數(shù)據(jù)庫(kù)存儲(chǔ)JSON類型的數(shù)據(jù)會(huì)用JSON類型或者TEXT類型
注意:用JSON類型的話
1)JSON列存儲(chǔ)的必須是JSON格式數(shù)據(jù),否則會(huì)報(bào)錯(cuò)。
2)JSON數(shù)據(jù)類型是沒(méi)有默認(rèn)值的。
舉個(gè)栗子
1、首先我們看到數(shù)據(jù)表中,F(xiàn)orm_Value_一列是josn格式存在的,又想通過(guò)其中的一組或者幾組鍵值對(duì)來(lái)進(jìn)行查詢。
2、通過(guò)以下語(yǔ)句就可以通過(guò)key,value來(lái)進(jìn)行查詢了,如果多個(gè)條件,正常加 and 就可以了。
**注意:**like 查詢varchar類型時(shí)要將單箭頭變?yōu)殡p箭頭直接匹配值模糊查詢 ->>
SELECT * FROM vx_live_room where info ->> 'name' like '%測(cè)試%'
SELECT * FROM core_process where Form_Value_ -> '$.attendancer' = '馬立新'
3、如果是Mybatis框架,要把 > 符號(hào)轉(zhuǎn)義,像這樣用 <![CDATA[ ]]>
<![CDATA[ Form_Value_ -> '$.endDate' < #{endDate,jdbcType=VARCHAR} ]]>
擴(kuò)充:
查詢jaon串,返回json串里的某個(gè)字段
2.結(jié)果字段為json串
3.取json串中某個(gè)key的value值
4.->和->>區(qū)別,如圖
-> 結(jié)果值帶雙引號(hào)"值"
->> 結(jié)果值不帶引號(hào)
null依舊是null,不管符號(hào)是->還是->>
總結(jié)
到此這篇關(guān)于MySQL對(duì)JSON數(shù)據(jù)進(jìn)行查詢的文章就介紹到這了,更多相關(guān)MySQL對(duì)JSON數(shù)據(jù)查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL中你可能忽略的COLLATION實(shí)例詳解
mysql的collation大致的意思就是字符序,這篇文章主要給大家介紹了關(guān)于MySQL中COLLATION的相關(guān)資料,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Mysql字符串截取函數(shù)SUBSTRING的用法說(shuō)明
今天建視圖時(shí),用到了MySQL中的字符串截取,很是方便。2011-06-06SQL模糊查詢報(bào):ORA-00909:參數(shù)個(gè)數(shù)無(wú)效問(wèn)題的解決
這篇文章主要介紹了SQL模糊查詢報(bào):ORA-00909:參數(shù)個(gè)數(shù)無(wú)效問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Mysql 5.7 忘記root密碼或重置密碼的詳細(xì)方法
在Centos中安裝完MySQL數(shù)據(jù)庫(kù)以后,不知道密碼,這可怎么辦,下面給大家說(shuō)一下怎么重置密碼2016-12-12