MySQL中查詢json格式的字段例項詳解

2022-09-24 10:27:12 字數 1307 閱讀 9114

工作開發過程遇到乙個需求:需要動態儲存客戶的姓名、手機號碼、身份證、證件型別,意思是可能前端會傳乙個人或二個人或者三個人的資訊是動態的不固定人數的四個字段(姓名、手機號碼、身份證、證件型別)。

前端頁面如下:

我是使用list來接收前端傳過來 json,mysql 用 varchar 來儲存這個 json 陣列

[, ]

產品提出來的需求是要模糊查詢這些聯名客戶資訊,一開始我錯誤的寫法:

select * from signcustomergrtcvsumicvloup like 『%兒%'

但是後來發現有問題,比如 模糊輸入乙個字母 c ,就會把左邊『cardid' 的英文本段名稱匹配上。

後來我了解到 mysql 5.7 以後版本加入了 json 型別,可以使用json型別的一些函式直接查詢json格式的某個字段。

正確語法如下:

表字段:

idsign_customer_info_ext12

[,]主要使用的 sql 函式www.cppcns.com是 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 引數:

模糊查詢單個 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 '%馬雲%';

總結

pgsql中json格式陣列查詢結果變成了字串

最近使用到了json的陣列,用來儲存多個檔案的值,發現在連表查詢的時候返回結果變成了字串。打豆豆.io 我們發現attaches被轉換成了字串,但是我attaches欄位明明定義的是json型別的,但是返回 結果變成了字串。我們來看下資料庫的字段 add column attaches text n...

java中json格式的轉化

1 實體類與json物件的互相轉化 實體類轉json chartdata chartdata new chartdata chartdata.setname 直接訪問 chartdata.setvalue 335 1 使用jsonobject jsonobject json jsonobject.f...

iOS 中json中字典 轉json格式字串

這是我從plist檔案中找到的乙個字典,把裡面的字典轉成了json資料,多注意字串的拼接,雖然不難,容易犯錯誤。nsarray flags nsmutablestring jsonstring nsmutablestring stringwithformat mutstr jsonstring in...