2012-03-27 11 views
7

指定されたテーブル:ヌル値を含む2つの列の値を追加するSQLクエリ?

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

このクエリ:少なくとも1つの列がNULL値を持っているので

SELECT (ONE + TWO) FROM (TABLE) 

ちょうどX1年代値ではなく、他人の合計を返します。ヌルがあってもどうやって追加できますか?つまり、おそらくnullを0と見なしますか?

答えて

10

COALESCEは、パラメータにある最初のNULL以外の値を左から右に戻します。最初のフィールドがnullのときに、それはそのように0

がかかります、X210 + 0 = 10

1

になりますが良い答えが既にあるが、私はそれが中(antonpugに言及する価値があると思いますこれが起こっている理由は、NULLが比較または合計できる値ではないということです。

NULLは0または ''(空文字列)ではないので、NULLを含むすべての操作はNULLを(10 + NULL = NULL)になります、でも(NULL = NULL)FALSE

+1

に私は承知しています評価します。ありがとう! – antonpug

+1

Oracleでは、空の文字列はNULLです。これは、標準および他のRDBMとは異なります。 Oracleでは ''null'がtrueを返すデュアルから' true 'を選択し、 '' = '''が行を返さないデュアルから' true'を選択します。このため、連結演算子 '||'は、両辺がnullの場合にのみnullを返します。 'select null || 'Hello World!' from dual'は文字列 "Hello World!"を返します。 –

関連する問題