使用mysql中的enum字段选择行

时间:2013-04-10 20:40:59

标签: php mysql select enums

我遇到了我的表(userinfo)的枚举字段(UserStatus)的异常问题。表结构如下:

Field       Type        Default
------------------------------------------
Id          int(11)       (NULL)
FirstName   varchar(50)   (NULL)
LastName    varchar(50)   (NULL)
....        ...           ...
....        ...           ...   
UserStatus  enum('0','1') (NULL)

这里我有UserStatus值为NULL,0和1的行。但是当我尝试根据UserStatus字段选择行时,如:

SELECT 
    * 
FROM 
    userinfo 
WHERE 
    UserStatus<>'1'

它不起作用并导致结果集为空。

提前致谢。

2 个答案:

答案 0 :(得分:3)

请注意,NULL <> '1'本身就是NULL,因此您的条件不会与UserStatusNULL的行匹配。请改用此表达式:

UserStatus IS NULL OR UserStatus <> '1'

答案 1 :(得分:0)

如果您提供默认值并创建字段NOT NULL,那将是一个更好的结构,但在这种情况下您可以使用

 SELECT * 
 FROM userinfo 
 WHERE ifnull(UserStatus, '0') <> '1'