Sql Not In运算符消除表中的空值行
我想检索表A中我的COLUMNA中除1,2,3,4,5之外的所有具有值的行Sql Not In运算符消除表中的空值行,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想检索表A中我的COLUMNA中除1,2,3,4,5之外的所有具有值的行 SELECT * FROM TABLEA WHERE COLUMNA NOT IN (1,2,3,4,5) 但这也会消除COLUMNA中具有空值的行 我不想删除空值行,而是希望将这些行包括在结果集中 或者,我也可以尝试下面的查询 SELECT * FROM TABLEA WHERE COLUMNA NOT IN (1,2,3,4,5) OR COLUMNA IS NULL. 但我想知道,为什么有必要添加此或条件?为
SELECT * FROM TABLEA WHERE COLUMNA NOT IN (1,2,3,4,5)
但这也会消除COLUMNA中具有空值的行
我不想删除空值行,而是希望将这些行包括在结果集中
或者,我也可以尝试下面的查询
SELECT * FROM TABLEA WHERE COLUMNA NOT IN (1,2,3,4,5) OR COLUMNA IS NULL.
但我想知道,为什么有必要添加此或条件?为什么有必要添加其他条件
NULL
比较结果几乎总是NULL
,而不是true或false。WHERE
子句过滤掉所有非真值,因此它们被过滤掉
这就是SQL如何定义NULL
。为什么NULL
是这样定义的
NULL
在SQL中并不表示“缺少”。它的意思是“未知”。因此,不在(1,2,3,4,5)
中的结果是“未知的”,因为该值可能是1,也可能是0。因此它被过滤
我还将注意到,SQL标准包括NULL
-安全比较,与没有区别,与不同,分别对应于=
和
。它们将NULL
视为“任何其他值”,因此两个NULL
值被视为相等。但是,据我所知,在
和
中没有
空
-safe的构造。请尝试以下操作:
从表A中选择*,其中ISNULL(COLUMNA,0)不在(1,2,3,4,5)中。您可以在