SQL查询添加包含空值的两列的值?

时间:2012-03-27 18:11:21

标签: sql database oracle

给出表:

    ID   ONE   TWO
    X1   15    15
    X2   10    -
    X3   -     20

此查询:

SELECT (ONE + TWO) FROM (TABLE)

只返回X1值的总和,但不返回其他值,因为至少有一列具有空值。即使有空值,我怎么还能添加它们?即将null视为0?

2 个答案:

答案 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