除非指定,否则不会返回空值 - Oracle SQL

除非指定,否则不会返回空值 - Oracle SQL

当尝试运行仅排除某些数据的选择语句时,空值也会被错误地排除。

使用表 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 值和布尔运算符的信息。

相关内容