【发布时间】:2023-03-17 11:20:01
【问题描述】:
在 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"}
【问题讨论】:
-
您是否有任何示例数据可以证明该问题?
-
任何数据都可以。假设一个表只有两列,id 和 data,其中数据是 json 类型。我在问题描述中添加了一些
标签: mysql where where-in mysql-json