在 MySQL 中查询 json 字段存在一个难以理解的问题。该data
列的类型为 json。
以下查询工作得很好
SELECT * FROM `someTable` WHERE data->'$.someData' in ('A')
但是,以下一个不返回任何内容。
SELECT * FROM `someTable` WHERE data->'$.someData' in ('A','B')
有趣的是,这也有效:
SELECT * FROM `someTable` WHERE data->'$.someData'='A' OR data->'$.someData'='B'
我不知道为什么会发生这种情况。我最初认为以 json 查询格式执行的WHERE x IN可能正在执行类似 && 但即使值是 ('A','A') 它仍然没有返回任何内容,这实际上表明WHERE x IN中有多个值不会工作。
样本数据(任何人都会这样做)
id | data (json)
1 | {"someData":"A"}
2 | {"someData":"B"}