查询数据库中某个字段是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;