一, 现象:
今天查询时, 某字段 x 为 varchar
可能的值为 A B C 0 1 2 3 4
想把 0 1 2 3 4 的所有数据查出, 使用的 SQL 为
select * from table where x in (0,1,2,3,4)
结果发现, 会把所有数据都查出
但是, 使用
select * from table where x in ('0',1,2,3,4)
查出数据即为正常数据
二, 原因:
经查阅, 默认情况下, MySQL 会尽量进行类型转换
所以, 当字符串转为整数时, 如 A,B,C 这种值会转换失败, 则返回 0, 所以符合查询条件
来源: http://www.bubuko.com/infodetail-2967001.html