2

TSQL有一个奇怪的行为:

SELECT 1 + NULL

返回NULL,

尽管

SELECT sum(someColumn)  

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

决定使二元运算符在含义上与匹配聚合函数不同的设计选择是什么?

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

(评论后编辑)

4

1 回答 1

4

这种行为在大多数形式的 SQL 中很常见 - 在单行级算术运算中,“(b)因为 Null 不是数据值,而是未知值的标记,在 Null 上使用数学运算符会导致未知值,这由 Null 表示。”

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

这两种引用的行为在 Wikipedia 文章中都有引用,引用了定义这些行为的 ISO/IEC 标准。

于 2013-04-24T18:50:47.197 回答