mysql json資料引號處理
問題描述:新版本中引入的json資料檢索時獲取某欄位值時帶引號
場景: 檢視mysql版本: select version();
資料庫資料:tabel表中data 欄位中的資料
資料取出後格式化如下(假資料):
{ "address": { "zip": "29730", "city": "Rock Hill", "state": "South Carolina", "detail": "301 S Jones Ave,Rock Hill,SC 29730,US", "street": "301 S Jones Ave", "telnum": "7042221086", "company": "CCTV VERA", "country": "US", "street2": "", "firstName": "Francisco Vera" } }
目標是取address中的detail資料,有兩種方法
一:
select data->'$.address.detail' from tabel ;
得到 "301 S Jones Ave,Rock Hill,SC 29730,US"
二:
select JSON_EXTRACT(data,'$.address.detail') from tabel;
得到 "301 S Jones Ave,Rock Hill,SC 29730,US"
問題:如上,無論哪種方法得到的資料都是帶有雙引號的,這時候的資料就不能正常做對比
可以使用 JSON_UNQUOTE函式將雙引號去除
select
select JSON_UNQUOTE(data->'$.address.detail') from tabel ;
都得到 301 S Jones Ave,Rock Hill,SC 29730,US
目標完成
注:此時獲取的資料用來做比較 有時候會出現型別不統一,使用 CAST(xx as CHAR) 將資料轉為字元型別進行處理