2011-06-03 28 views
1

我在我的表中有一列有几个不同的值,其中我通过使用group by进行了验证。试图找到返回0的列的NULL值的数量?

当我做这样的事情它返回一个数字量:

SELECT COUNT(*) FROM table WHERE age=''; 

但是我这样做的时候,它总是返回0尽管这是不正确的:

SELECT COUNT(*) FROM table WHERE age=NULL; 

任何想法,这是为什么返回0时它应该返回正确的结果?

回答

6
SELECT COUNT(*) FROM table WHERE age IS NULL; 

3.3.4.6. Working with NULL Values

为了测试NULL,则不能使用该 算术比较操作符,如 =,<,或者<>。

使用IS NULL 和IS NOT NULL操作符:

+1

简而言之,NULL是一个特殊的值,根据定义,它不能等于其他任何东西,包括它本身。 – 2011-06-03 17:55:34

+0

啊,是啊......傻傻的我哈哈。感谢那! – Brett 2011-06-03 18:56:54

1

NULL表示未知值,所以空在技术上并不等于什么 - 包括本身

您应该使用IS NULL代替:

SELECT COUNT(*) FROM table WHERE age IS NULL 
1

你需要说 “年龄IS NULL” 而不是 “年龄=空”。 NULL不等于任何东西 - 这意味着没有数据,并且不能测试是否相等。