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


82

次の表(たとえば、いくつかの内部結合ステートメントの結果)を想定します。

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

結果は次のようになります。

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)、しかしNULLとどまりますNULL

回答:


154

IFNULL(column, 0)列の値をゼロに変換するために使用します。または、COALESCE関数は同じことを行いますが、(1)COALESCEANSIに準拠しており、準拠しIFNULLておらず、(2)COALESCE任意の数の列/値を受け取り、渡された最初のnull以外の値を返します。


と合体は複数の値を持つことができますか?
ante.sabo 2009

10
はい...したがって、COALESCE(column1、column2、0)は、これらの値の最初の非nullを返します。これは垂直方向ではなく水平方向に機能することに注意してください。列は同じテーブル行に属している必要があります。
David Andres

@rexem:ありがとう、それはあなたが言うのはとてもうれしいです。大変感謝いたします!
David Andres

@DavidAndres百万ありがとう。もう一度賛成できれば。
ストーリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.