Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Not In运算符消除表中的空值行_Sql_Sql Server_Tsql - Fatal编程技术网

Sql Not In运算符消除表中的空值行

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. 但我想知道,为什么有必要添加此或条件?为

我想检索表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.

但我想知道,为什么有必要添加此或条件?

为什么有必要添加其他条件

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)中。

您可以在