在MySQL中使用ENUM变量类型选择没有双引号的行

时间:2016-02-02 06:21:37

标签: mysql enums

如何在不使用双引号(“1”)的情况下选择行。 我在枚举类型中设计了status列。

status
enum('0', '1')  

我的查询:

 SELECT * FROM `user` WHERE activation_key='123456' AND status="1";

结果:

 Display 1 row

我正在尝试:

 SELECT * FROM `user` WHERE activation_key='123456' AND status=1;

结果:

Display 0 row

是否可以在status列中获取没有双引号或单引号的数据? 我是MYSQL的初学者,对不起我的问题抱歉!

1 个答案:

答案 0 :(得分:1)

枚举值必须是带引号的字符串文字。要查询字符串,您必须将其括在引号中。

如果您使枚举值看起来像数字,则很容易将文字值与其内部索引号混淆。

numbers ENUM('0','1','2')
  

如果存储2,则将其解释为索引值,并变为' 1'   (索引为2的值)。如果您存储' 2',则它与枚举匹配   值,因此它存储为' 2'。如果您存储' 3',则它与任何内容都不匹配   枚举值,因此它被视为一个索引并成为' 2' (该   索引值为3)。

mysql> INSERT INTO t (numbers) VALUES(2),('2'),('3');
mysql> SELECT * FROM t;
+---------+
| numbers |
+---------+
| 1       |
| 2       |
| 2       |
+---------+

更多详情ENUM in MySQL