Gar*_*ett 5 sql t-sql sql-server
包含以下值的表:
Column1 Column2
1 NULL
NULL 4
2 NULL
NULL 5
3 6
Run Code Online (Sandbox Code Playgroud)
以下查询:
SELECT
SUM([Column1] + [Column2] )
FROM [myTable]
Run Code Online (Sandbox Code Playgroud)
返回9它应该返回的值21.为什么?它是如何达到价值的?
我知道可以通过添加ISNULL如下来修正SUM :
SELECT
SUM(ISNULL([Column1], 0) + ISNULL([Column2], 0))
FROM [myTable]
Run Code Online (Sandbox Code Playgroud)
但我想知道价值背后的逻辑 9
用于COALESCE将null转换为0.(如果你想将空值设为零,那就是它.)
SELECT SUM(COALESCE(column1,0) + COALESCE(column2,0))
FROM table1
Run Code Online (Sandbox Code Playgroud)
和一个数的和到底是多少null?请注意 的来源9:唯一具有非 nullColumn1和 的行Column2。
当然,已经发布了一种可行的解决方案。但是,直接跳到解决方案的乐趣在哪里呢?
(应OP的要求复制pasta)