为什么null列与count聚合函数的行为不同?

时间:2013-09-06 22:15:18

标签: sql oracle

在oracle中,我们有一个任务来计算具有特定空列的行数。

我有查询:

select count(MY_COL) from My_Table where MY_COL is null;

这会返回零结果。

为什么返回零结果和查询

select count(*) from My_Table where MY_COL is null;

返回正确的结果?

1 个答案:

答案 0 :(得分:6)

两个结果正确。

select count(col_name)计算col_name不为空的记录,而select count(*)计算所有记录,不管是否有任何空值。

这在Tahiti上记录:

  

如果指定 expr ,则COUNT将返回expr不为null的行数。您可以计算所有行,也可以只计算 expr 的不同值。

     

如果指定星号(*),则此函数返回所有行,包括重复行和空值。

     

COUNT永远不会返回null。