TSQL 有一个奇怪的行为:
SELECT 1 + NULL
返回NULL
,
同时
SELECT sum(someColumn)
将始终返回一个整数,忽略 null 值,除非整列为 null(在这种情况下返回 null)。
使二元运算符的含义与匹配聚合函数不同的决定背后的设计选择是什么?
除了用coalesce()填充我的SQL之外,有没有办法克服这个“限制”?
(评论后编辑)
最佳答案
这种行为对于大多数形式的 SQL 都很常见 - 在单行级别 arithmetic operations ,“(b)因为Null不是一个数据值,而是一个未知值的标记,对Null使用数学运算符会得到一个未知值,用Null来表示。”
相比之下,在aggregate functions中(即跨多行的操作),“所有聚合函数都会执行 Null 消除步骤,以便 Null 值不会包含在最终的计算结果中。”
维基百科文章中引用了这两种引用的行为,引用了定义这些行为的 ISO/IEC 标准。
关于sql-server - 为什么 TSQL 运算符 + 的行为与聚合函数 sum() 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16196713/