在mysql中使用enum字段选择行


selecting rows using the enum field in mysql

我的表(userinfo)的enum字段(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'

它不工作,导致一个空的结果集。

请记住,NULL <> '1'本身就是NULL,因此您的条件将不匹配UserStatusNULL的行。用这个表达式代替:

UserStatus IS NULL OR UserStatus <> '1'

这将是一个更好的结构,如果你给一个默认值,并使字段NOT NULL,但在这种情况下,你可以使用

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