使用枚举的= 1和='1'之间的mysql查询区别是什么?

时间:2013-04-10 08:22:59

标签: mysql phpmyadmin

我有一个像

这样的查询
SELECT name, town FROM clients WHERE course = 1;

它给了我一些结果。

但我注意到查询没有输出最新的条目。我用phpmyadmin查看表客户端,我看到更多的课程字段值为1。 我将查询更改为

SELECT name, town FROM clients WHERE course = '1';

我得到了正确的输出。

我的问题:这是为什么?为什么我在第一个查询中得到了一些结果?

ps:当然是一个枚举字段(' 0',' 1')。

1 个答案:

答案 0 :(得分:3)

1是一个整数值,或者是“TRUE”,或者是......(不明确的),而'1'是一个字符串值。

MySQL-documentation中针对ENUM类型所述:

  

ENUM是一个字符串对象,其值从列表中选择   在列中显式枚举的允许值   表创建时的规范。

     

[...]

     

如果您希望使用数字作为枚举值,则必须将其括起来   它用引号。如果省略引号,则为数字   被视为指数。出于这个原因和其他原因 - 如后面所述   在本节中 - 我们强烈建议您不要使用数字   枚举值。

因此,ENUM是一个字符串对象,因此您需要将其作为字符串引用。