给出表:
ID ONE TWO X1 15 15 X2 10 - X3 - 20
此查询:
SELECT (ONE + TWO) FROM (TABLE)
只返回X1
值的总和,但不返回其他值,因为至少有一列具有空值。即使有空值,我怎么还能添加它们?即将null视为0?
答案 0 :(得分:10)
SELECT (COALESCE(ONE, 0) + COALESCE(TWO, 0)) FROM (TABLE)
COALESCE
将从左到右返回参数中找到的第一个非null值。因此,当第一个字段为空时,它将采用0。
这样,X2
会产生10 + 0 = 10
答案 1 :(得分:1)
已经有了一个很好的答案,但我认为值得一提的是antonpug(如果他不知道)发生这种情况的原因是NULL不是可以比较或求和的值。
NULL不是0或''(空字符串),因此每个涉及NULL的操作都将导致NULL(10 + NULL = NULL),偶数(NULL = NULL)将评估为FALSE