理解sql中的is null查询



我有一个3行的表,在那里我用属性填充了所有的列。我不明白为什么我这样做:

SELECT count(*) FROM person WHERE NULL is NULL;

它给了我结果:你能解释一下吗?

在SQL中,NULL = NULL不为真。然而,NULL IS NULL确实成立,并且等价于1=1。因此,您将获得所有行。

例如,根据SQL Server的MSDN文档:

如果表达式的值为NULL,则is NULL返回TRUE;否则,返回FALSE。

如果表达式的值为NULL, is NOT NULL返回FALSE;否则,返回TRUE。

这里,值NULLIS NULL的有效表达式,因此返回TRUE。因此,您将获得表中的所有行。

因为对于每个行条件

NULL is NULL 

总是为真,所以没有理由过滤行。

下面的条件可以与上面的条件相反

1=0

使用此条件,您将获得0行,因为对于每一行,条件都为false。

'WHERE NULL is NULL'是您正在使用的条件,并且它总是为真,因此它检索所有3个结果。

最新更新