在oracle中,我们有一个任务来计算具有特定空列的行数。
我有查询:
select count(MY_COL) from My_Table where MY_COL is null;
这会返回零结果。
为什么返回零结果和查询
select count(*) from My_Table where MY_COL is null;
返回正确的结果?
答案 0 :(得分:6)
两个结果都正确。
select count(col_name)
计算col_name
不为空的记录,而select count(*)
计算所有记录,不管是否有任何空值。
这在Tahiti上记录:
如果指定 expr ,则COUNT将返回expr不为null的行数。您可以计算所有行,也可以只计算 expr 的不同值。
如果指定星号(*),则此函数返回所有行,包括重复行和空值。
COUNT永远不会返回null。