MySQL中查詢json格式的字段實例詳解
工作開發(fā)過程遇到一個需求:需要動態(tài)存儲客戶的姓名、手機(jī)號碼、身份證、證件類型,意思是可能前端會傳一個人或二個人或者三個人的信息是動態(tài)的不固定人數(shù)的四個字段(姓名、手機(jī)號碼、身份證、證件類型)。
前端頁面如下:
我是使用List
[{ "cardId": "110101199003072316", "cstName": "張雙兒1", "cstMobile": "13263654144", "idCardType": "1" }, { "cardId": "11010119900307571X", "cstName": "張雙兒2", "cstMobile": "13263654144", "idCardType": "1" }]
產(chǎn)品提出來的需求是要模糊查詢這些聯(lián)名客戶信息,一開始我錯誤的寫法:
select * from signCustomerGroup like ‘%兒%'
但是后來發(fā)現(xiàn)有問題,比如 模糊輸入一個字母 c ,就會把左邊‘cardId' 的英文字段名稱匹配上。
后來我了解到 MySQL 5.7 以后版本加入了 json 類型,可以使用json類型的一些函數(shù)直接查詢json格式的某個字段。
正確語法如下:
表字段:
id | sign_customer_info_ext |
---|---|
1 | [{“cstName”:“hhjk”,“cstMobile”:“14258669888”,“idCardType”:“1”,“cardId”:“460101199601012516”}] |
2 | [{“cstName”:“ghhj中文1355”,“cstMobile”:“18253558608”,“idCardType”:“1”,“cardId”:“460101199601012815”},{“cstName”:“fhjj重要133366”,“cstMobile”:“15555555555”,“idCardType”:“1”,“cardId”:“460101199601012313”}] |
主要使用的 SQL 函數(shù)是 json_extract() ,它的作用是:從JSON格式查找所有指定數(shù)據(jù)
1. json 數(shù)組查詢
模糊查詢 json 數(shù)組格式的字段中某個字段: 使用方式: SELECT * FROM 表名 WHERE json_extract(字段名,"$[*].json中key") like '%需要搜索的值%'; 實例: SELECT * FROM table WHERE json_extract(sign_customer_info_ext,"$[*].cstName") like '%h%';
精準(zhǔn)查詢(注意:精準(zhǔn)查詢必須寫明所查詢字段所屬數(shù)組那個下標(biāo),比如查排在一個就是 [0],第二個就是 [1]) SELECT id,sign_customer_info_ext FROM table WHERE json_extract(sign_customer_info_ext,"$[0].cstName") = 'ghhj中文1355';
2.單個 json 查詢
前端和mysql數(shù)據(jù)庫中 單個 json 參數(shù):
{ "cstName": "馬云", "cstMobile": "17879767646", "idCardType": "1", "cardId": "E4813980" }
模糊查詢單個 json 查詢: 使用方式: SELECT id,sign_customer_info_ext FROM 表名 WHERE json_extract(字段名,"$.json中key") like '%馬云%'; 實例: SELECT id,sign_customer_info_ext FROM table WHERE json_extract(sign_customer_info_ext,"$.cstName") like '%馬云%';
總結(jié)
到此這篇關(guān)于MySQL中查詢json格式的文章就介紹到這了,更多相關(guān)MySQL查詢json格式字段內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。