最近写项目,用到了mysql,5.7.13后的json格式保存数据。刚刚涉及到查询条件在json数组里。
数据格式如下:
因为是数组,不管是用
select * from tableName WHERE column->'$.name' = '周年庆'
select * from tableName WHERE column->>'$.name' = '周年庆'
都无法查询出数据.
那匹配数据的sql如何写呢?
单条件匹配和多条件匹配又是怎么样?
要匹配json 数组的数据值 得用 JSON_CONTAINS 函数
select * from tableName t
where JSON_CONTAINS(column,JSON_OBJECT('name','周年庆'))
问题解决,嘴角上扬
注意:以上是匹配json 对象,JSON_OBJECT('name','周年庆')这里是创建了一个json 对象
如果只匹配某个值就是
其实就是JSON_CONTAINS(json,值)
例如:
SELECT * FROM work_order WHERE JSON_CONTAINS(content ->'$[*].patentNo','22')
看看content ->'$[*].patentNo' 对应的json
问题二 例如我要匹配 name = 周年庆,addtime = 2017-10-12 对象该怎么写?
select * from tableName t
where JSON_CONTAINS(column,JSON_OBJECT('key','value','key','value'))