http://www.oracle.com/technetwork/issue-archive/2005/05-jul/o45sql-097727.html
SUM
函数会忽略null
值!
在求和时,如果将null
值替换为0,可使用:
select sum(nvl(column, 0)) from some_table;
但是如果没有一条符合条件的数据呢?
-- 返回null
select sum(nvl(column, 0)) from some_table where 1 != 1;
此时返回null
,如果希望结果是0,则使用:
select nvl(sum(column), 0) from some_table;
如果期望返回数值结果,在求和时总是使用:
select nvl(sum(column), 0) from some_table;
多列求和
比如:
select nvl(sum(column1 + column2), 0) from some_table;
如果column1
或column2
任何一个是null
,则column1 + column2
结果为null
,此时可使用:
select nvl(sum(nvl(column1, 0) + nvl(column2, 0)), 0) from some_table;
网友评论