如果我执行`WHERE field = 1`和`WHERE field ='1'`,为什么MySQL会返回两个不同的数据集?

时间:2010-02-25 10:45:05

标签: mysql

我注意到一些奇怪的事情 - 当我使用WHERE field=1WHERE field='1'进行查询时,MySQL会返回两个不同的数据集。

field定义为枚举('0','1','2')。

我如何才能获得不同的数据集?

对于第一个查询,我得到大约500条记录。第二次,我得到19(!!!)。

我无法解释。有什么想法吗?

谢谢,Boda Cydo。

2 个答案:

答案 0 :(得分:5)

In MySQL the enum index starts with 1(实际上,0是空字符串)。所以

field = 1

应被视为

field = '0'

答案 1 :(得分:1)

什么数据类型是“字段”?在一个示例中,您将“字段”的值与NUMBERIC值1进行比较,而在另一个示例中,您将其与字符串“1”进行比较,即包含文本“1”的一个字符串。 两者不一定相同 [编辑:我已经忘记了MySql ENUM,自从我积极使用MySql以来已经有一段时间了,所以对于这个具体案例,KennyTM所说的=)]

如果没有看到您正在使用的数据集,以及表定义(查看数据类型),以及您正在使用的MySql的特定版本,我无法给出更好的答案。但是,它确实可以归结为这样一个事实,即你表现的两个查询,虽然表面上相同,但实际上是不同的。