当尝试运行仅排除某些数据的选择语句时,空值也会被错误地排除。
使用表 a:
ID NAME
1 Foo
2 Bar
3 (null)
以下声明:
select * from a where NAME<>'Foo'
返回以下内容:
ID NAME
2 Bar
为什么此语句没有返回 ID 3?要包含具有空值的记录,我必须将 select 语句更改为
select * from a where (NAME<>'Foo' or NAME is null)
答案1
SQL 的工作方式如下。(NULL <> 'Foo')
返回NULL
,这不满足条件。如果要包含该行,则需要OR NAME IS NULL
或需要考虑存储一个空字符串而不是 NULL,如果适合您的用例。
http://dba.fyicenter.com/faq/sql_server_2/What_Are_NULL_Values.html有更多关于 NULL 值和布尔运算符的信息。