MySQL中查詢json格式的字段實(shí)例詳解
工作開發(fā)過程遇到一個(gè)需求:需要?jiǎng)討B(tài)存儲(chǔ)客戶的姓名、手機(jī)號(hào)碼、身份證、證件類型,意思是可能前端會(huì)傳一個(gè)人或二個(gè)人或者三個(gè)人的信息是動(dòng)態(tài)的不固定人數(shù)的四個(gè)字段(姓名、手機(jī)號(hào)碼、身份證、證件類型)。
前端頁面如下:

我是使用List
[{
"cardId": "110101199003072316",
"cstName": "張雙兒1",
"cstMobile": "13263654144",
"idCardType": "1"
}, {
"cardId": "11010119900307571X",
"cstName": "張雙兒2",
"cstMobile": "13263654144",
"idCardType": "1"
}]
產(chǎn)品提出來的需求是要模糊查詢這些聯(lián)名客戶信息,一開始我錯(cuò)誤的寫法:
select * from signCustomerGroup like ‘%兒%'
但是后來發(fā)現(xiàn)有問題,比如 模糊輸入一個(gè)字母 c ,就會(huì)把左邊‘cardId' 的英文字段名稱匹配上。
后來我了解到 MySQL 5.7 以后版本加入了 json 類型,可以使用json類型的一些函數(shù)直接查詢json格式的某個(gè)字段。
正確語法如下:
表字段:
| 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ù)組格式的字段中某個(gè)字段: 使用方式: SELECT * FROM 表名 WHERE json_extract(字段名,"$[*].json中key") like '%需要搜索的值%'; 實(shí)例: SELECT * FROM table WHERE json_extract(sign_customer_info_ext,"$[*].cstName") like '%h%';
精準(zhǔn)查詢(注意:精準(zhǔn)查詢必須寫明所查詢字段所屬數(shù)組那個(gè)下標(biāo),比如查排在一個(gè)就是 [0],第二個(gè)就是 [1]) SELECT id,sign_customer_info_ext FROM table WHERE json_extract(sign_customer_info_ext,"$[0].cstName") = 'ghhj中文1355';
2.單個(gè) json 查詢
前端和mysql數(shù)據(jù)庫中 單個(gè) json 參數(shù):
{
"cstName": "馬云",
"cstMobile": "17879767646",
"idCardType": "1",
"cardId": "E4813980"
}
模糊查詢單個(gè) json 查詢: 使用方式: SELECT id,sign_customer_info_ext FROM 表名 WHERE json_extract(字段名,"$.json中key") like '%馬云%'; 實(shí)例: 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL創(chuàng)建唯一索引時(shí)報(bào)錯(cuò)Duplicate?entry?*?for?key問題
這篇文章主要介紹了MySQL創(chuàng)建唯一索引時(shí)報(bào)錯(cuò)Duplicate?entry?*?for?key問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
mysql 5.7.20常用下載、安裝和配置方法及簡(jiǎn)單操作技巧(解壓版免安裝)
這篇文章主要介紹了mysql 5.7.20常用下載、安裝和配置方法及簡(jiǎn)單操作技巧(解壓版免安裝)的相關(guān)資料,需要的朋友可以參考下2017-11-11
Mysql中count帶條件計(jì)數(shù)實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于Mysql中count帶條件計(jì)數(shù)的相關(guān)資料,Mysql中count()函數(shù)的一般用法是統(tǒng)計(jì)字段非空的記錄數(shù),所以可以利用這個(gè)特點(diǎn)來進(jìn)行條件統(tǒng)計(jì),需要的朋友可以參考下2023-09-09
MySQL的CASE WHEN語句的幾個(gè)使用實(shí)例
這篇文章主要介紹了MySQL的CASE WHEN語句的幾個(gè)使用實(shí)例,需要的朋友可以參考下2014-05-05
mysql數(shù)據(jù)庫超過最大連接數(shù)的解決方法
當(dāng)mysql超過最大連接數(shù)時(shí),會(huì)報(bào)錯(cuò)”Too many connections”,本文主要介紹了mysql數(shù)據(jù)庫超過最大連接數(shù)的解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12

