TSQL有一种奇怪的行为:
SELECT 1 + NULL
返回NULL
,
,而
SELECT sum(someColumn)
将始终返回一个整数,忽略空值,除非整列为null(在这种情况下它返回null)。
决定使二元运算符的意义与匹配的聚合函数不同,有哪些设计选择?
有没有办法克服这个'限制',除了用coalesce()填充我的SQL?
(评论后编辑)
答案 0 :(得分:4)
此行为在大多数形式的SQL中都很常见 - 在单行级arithmetic operations中,“(b)因为Null不是数据值,而是未知值的标记,在Null结果上使用数学运算符在未知值中,由Null表示。“
相比之下,在aggregate functions(即跨多行的操作)中,“所有聚合函数都执行Null消除步骤,因此Null值不包括在计算的最终结果中。”
引用的行为都引用了维基百科文章中的引用,引用了定义这些行为的ISO / IEC标准。