MySQL中查詢json格式的字段實例詳解
工作開發過程遇到一個需求:需要動態存儲客戶的姓名、手機號碼、身份證、證件類型,意思是可能前端會傳一個人或二個人或者三個人的信息是動態的不固定人數的四個字段(姓名、手機號碼、身份證、證件類型)。
前端頁面如下:
我是使用List來接收前端傳過來 json,mysql 用 varchar 來保存這個 json 數組
[{'cardId': '110101199003072316','cstName': '張雙兒1','cstMobile': '13263654144','idCardType': '1'}, {'cardId': '11010119900307571X','cstName': '張雙兒2','cstMobile': '13263654144','idCardType': '1'}]
產品提出來的需求是要模糊查詢這些聯名客戶信息,一開始我錯誤的寫法:
select * from signCustomerGroup like ‘%兒%’
但是后來發現有問題,比如 模糊輸入一個字母 c ,就會把左邊‘cardId’ 的英文字段名稱匹配上。后來我了解到 MySQL 5.7 以后版本加入了 json 類型,可以使用json類型的一些函數直接查詢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 函數是 json_extract() ,它的作用是:從JSON格式查找所有指定數據
1. json 數組查詢
模糊查詢 json 數組格式的字段中某個字段:使用方式:SELECT * FROM 表名 WHERE json_extract(字段名,'$[*].json中key') like ’%需要搜索的值%’;實例:SELECT * FROM table WHERE json_extract(sign_customer_info_ext,'$[*].cstName') like ’%h%’;
精準查詢(注意:精準查詢必須寫明所查詢字段所屬數組那個下標,比如查排在一個就是 [0],第二個就是 [1])SELECT id,sign_customer_info_ext FROM table WHERE json_extract(sign_customer_info_ext,'$[0].cstName') = ’ghhj中文1355’;
2.單個 json 查詢
前端和mysql數據庫中 單個 json 參數:
{'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 ’%馬云%’;
總結
到此這篇關于MySQL中查詢json格式的文章就介紹到這了,更多相關MySQL查詢json格式字段內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
