我遇到了我的表(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'
它不起作用并导致结果集为空。
提前致谢。
答案 0 :(得分:3)
请注意,NULL <> '1'
本身就是NULL
,因此您的条件不会与UserStatus
为NULL
的行匹配。请改用此表达式:
UserStatus IS NULL OR UserStatus <> '1'
答案 1 :(得分:0)
如果您提供默认值并创建字段NOT NULL
,那将是一个更好的结构,但在这种情况下您可以使用
SELECT *
FROM userinfo
WHERE ifnull(UserStatus, '0') <> '1'