我有带有枚举enum('0','1','2','3','4','5','6')的表字段。
在查询中,当我尝试使用IN(1)时不起作用,但是当我使用IN(“ 1”)时它正在起作用。
如果我在(1,2)中使用它,则可以正常工作。
因此,当“ IN”子句中有一个值时,它应该不带引号就可以工作
最佳答案
ENUM值已定义并存储为字符串。可以通过字符串值或数字索引值(从1开始而不是0)访问它们。
您的枚举值从“ 0”开始,其数字索引值为1。因此,可以使用IN(1,2)从查询中获取一些数据,但这些数字将被视为索引,并且您实际上将返回枚举值为“ 2”和“ 3”(可能不是您认为要返回的值)的记录的数据。IN(1)
不起作用,因为您没有索引值为1(emem值='0')的数据IN('1')
之所以起作用,是因为您确实有一个枚举值为“ 1”的数据
试试这个作为一个实际的例子
http://sqlfiddle.com/#!9/3993b/1
或阅读the mysql documentation中有关处理枚举文字的部分