mysql 數據庫,某個字段是json類型,驗證json里的某個字段的值


查詢數據庫中某個字段是json類型里某個具體字段的值:

select * from table where  json字段名 -> '$.json里的字段名' >= 0.3

 

 

例如:

數據庫中某字段是json類型,並且json里有數組格式的數據,需要查詢

data
{'age': ["AGE_BETWEEN_24_30", "AGE_BETWEEN_31_40"]}
{'age': ["AGE_BETWEEN_24_30"]}
{'age': []}

 

 

 

 

 

 

json里的字段有數組類型,查詢數組是空的數據

select * from table  where   json字段名 -> '$.json里的字段名' like '[]' 

 

json里的字段有數組類型,查詢數組是具體值的數據

select * from table  where   json字段名 -> '$.json里的字段名' like '["AGE_BETWEEN_24_30", "AGE_BETWEEN_31_40"]' 

 

 

json里的字段有數組類型,查詢數組不是具體值的數據

select * from table  where   json字段名 -> '$.json里的字段名'  not  like '["AGE_BETWEEN_24_30", "AGE_BETWEEN_31_40"]' 

 

json里的值某個字段缺失,查詢所有json里不包含這個字段的數據

select * from table  where   json字段名 -> '$.json里的字段名' is null 

 

遇到新問題:

數據庫中某個字段是json類型,json里有數組格式的字段,需要將數組格式的字段單獨提取並且轉化為字符串格式,來跟其他表關聯查詢

提取並轉化數組格式的字段:

select REPLACE(REPLACE(json_extract(json字段名, "$.數組格式的字段名"),'[ " ',' '),' " ] ',' ') as imageId from table;

例如:

select REPLACE(REPLACE(json_extract(data, "$.age"),'[ " ',' '),' " ] ', ' ') as age from table;

 

 

 

記錄另一個問題:

json數據中有某字段是數組格式,要查找符合條件的數據,直接使用%就可以模糊查找

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM