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