理解sql中的is null查询

时间:2014-08-05 11:03:16

标签: sql null

我有一个包含3行的表,我在其中填充了所有具有属性的列。当我这样做时,我无法理解为什么:

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

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

3 个答案:

答案 0 :(得分:3)

因为每个行条件

NULL is NULL 

始终为true,因此没有理由过滤行。

以下情况可能与上述情况相反

1=0

在这种情况下你会获得0行,因为对于每一行,条件都是假的。

答案 1 :(得分:3)

在SQL中,NULL = NULL不正确。但是,NULL IS NULL确实如此,相当于1=1。因此,您将获得所有行。

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

  

如果expression的值为NULL,则IS NULL返回TRUE;否则,它返回FALSE。

     

如果expression的值为NULL,则IS NOT NULL返回FALSE;否则,它返回TRUE。

此处,值NULLIS NULL的有效表达式,因此返回TRUE。因此,您可以从表中获取所有行。

答案 2 :(得分:0)

'WHERE NULL is NULL'是您正在使用的条件,它始终为true,因此它会检索所有3个结果。