2012-03-27 50 views
7

鑑於表:SQL查詢添加兩列包含空值的值?

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

這個查詢:

SELECT (ONE + TWO) FROM (TABLE) 

只是返回X1的值,但不是別人的總和,因爲至少有一個列有一個空值。即使存在空值,我仍然可以添加它們嗎?即認爲null爲0也許?

回答

10
SELECT (COALESCE(ONE, 0) + COALESCE(TWO, 0)) FROM (TABLE) 

COALESCE將返回參數中的第一個非空值,從左到右。所以,當第一個字段爲空,它會採取0

這樣,X2將導致10 + 0 = 10

1

已經有一個很好的答案,但我認爲這是值得一提的antonpug(以他不知道)這種情況發生的原因是NULL不是一個可以比較或總結的值。

NULL不爲0或 ''(空字符串),所以涉及NULL每一個操作會導致NULL(10 + NULL = NULL),連(NULL = NULL)將評估爲FALSE

+1

我知道。謝謝! – antonpug 2012-03-27 18:54:42

+1

在Oracle中,空字符串爲NULL。這與標準和其他RDBM不同。在Oracle中''選擇'真'從雙'其中''爲空'返回true和'選擇真'從雙'其中'='''不返回一行。正因爲如此,如果雙方都爲空,連接運算符'||'只會返回null。 '選擇null ||'Hello World!' from dual'給出字符串「Hello World!」。 – 2012-03-27 19:18:38