web-dev-qa-db-ja.com

MySQL:NULLを0に型キャストする

次の表を想定してみましょう(例えば、いくつかの内部結合ステートメントの結果):

_id | column_1 | column_2
------------------------
 1 |  1       | 
 2 |  2       | 2
 3 |          | 3
_

たとえば、次のステートメントから取得できます。

_select a.id, t1.column_1, t2.column_2
from a
left join t1 on a.id = t1.id
left join t2 on a.id = t2.id
_

ここで、次のようにt1.column_1とt2.column_2を合計したい場合

_select 
    a.id, 
    t1.column_1, 
    t2.column_2,
    (t1.column_1 + t2.column_2) as cumulated
from a
left join t1 on a.id = t1.id
left join t2 on a.id = t2.id
_

Reslutは次のようになります。

_id | column_1 | column_2 | cumulated
------------------------------------
 1 |  1       | NULL     | NULL
 2 |  2       | 2        | 4
 3 |  NULL    | 3        | NULL
_

私の質問は基本的に、いくつかの計算を行うためにNULLを0に型キャストする方法はありますか?

CONVERT(t1.column_1, SIGNED)CAST(t1.column_1 as SIGNED)を試しましたが、NULLNULLのままです。

71
Pierre Spring

IFNULL(column, 0)を使用して、列の値をゼロに変換します。または、COALESCE関数は同じことを行います。ただし、(1)COALESCEはANSI準拠、IFNULLは非準拠、(2)COALESCEは任意の数の列/値であり、渡された最初の非ヌル値を返します。

139
David Andres