2

我的表(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'

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

提前致谢。

4

2 回答 2

3

请记住NULL <> '1'is 本身NULL,因此您的条件不会匹配UserStatusis 的行NULL。请改用此表达式:

UserStatus IS NULL OR UserStatus <> '1'
于 2013-04-10T20:54:55.370 回答
0

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

 SELECT * 
 FROM userinfo 
 WHERE ifnull(UserStatus, '0') <> '1'
于 2013-04-10T20:55:21.513 回答