操作数数据类型的无效类型对于求和运算符无效
我将对null的使用有疑问。
如果我运行此查询
SELECT SUM(x)
FROM (SELECT NULL AS x) AS DerivedTable
我收到错误消息
“操作数数据类型无效类型对于求和运算符无效。”
但是,如果我创建一个具有可为空字段的表并在总和中使用它,它将忽略NULL值并基本上将所有其余记录相加。
CREATE TABLE #temp1(x int)
insert into #temp values (NULL),(3),(5)
SELECT SUM(x) FROM #temp1
结果是8。
有没有对此的合乎逻辑的解释?是否会因为没有在派生表的查询中声明NULL而是在temp表中声明而导致数据类型为NULL?另外,我真的很想知道从表或派生表运行时是否有办法生成此错误消息,就像第二个#temp1示例一样。非常欢迎从表或表表达式运行时产生此错误消息的任何示例。
谢谢你们