日期:2014-05-18  浏览次数:20477 次

关于标准SQL与MS SQL中的count()聚合函数的区别?
在<Begining Sql>中对count的描述的是:
在圆括号内插入需要统计的数目的列的名字.结果集中返回的值是列中非NULL值的数目.

如果按上面的说法的话,在MS SQL SERVER中执行下面的语句应该返回非NUUL的记录数值33.
SQL code
 
use pubs
go
select count(minit) from employee    --pubs 的employee表中的minit字段的是记录数为43,其中有十个为null的记录.


但实际上返回为43.

这是为什么呢?
是标准的SQL与MS SQL的区别吗?

------解决方案--------------------
因为表中那10条记录的 minit 列值不为NULL,而是空字符串'',在SQL Server中,NULL与''并不等价。
------解决方案--------------------
这10个你认为是null的,实际是' ',即一个空格,所以不是null值
------解决方案--------------------
子陌红尘..我看了SQL Server联机丛书中给出的employee表.确实是为NULL值.并非你说的 ' '.
————————————————————————————————————————————————————————
我回帖之前已经查过pubs..employee表,核对过数据。