为什么TSQL operator +的行为与聚合函数sum()不同

时间:2013-04-24 15:56:26

标签: sql-server tsql null

TSQL有一种奇怪的行为:

SELECT 1 + NULL

返回NULL

,而

SELECT sum(someColumn)  

将始终返回一个整数,忽略空值,除非整列为null(在这种情况下它返回null)。

决定使二元运算符的意义与匹配的聚合函数不同,有哪些设计选择?

有没有办法克服这个'限制',除了用coalesce()填充我的SQL?

(评论后编辑)

1 个答案:

答案 0 :(得分:4)

此行为在大多数形式的SQL中都很常见 - 在单行级arithmetic operations中,“(b)因为Null不是数据值,而是未知值的标记,在Null结果上使用数学运算符在未知值中,由Null表示。“

相比之下,在aggregate functions(即跨多行的操作)中,“所有聚合函数都执行Null消除步骤,因此Null值不包括在计算的最终结果中。”

引用的行为都引用了维基百科文章中的引用,引用了定义这些行为的ISO / IEC标准。