2009-09-17 6 views
61

には、(例えば、いくつかの内部の結果は、結合文)私たちは、次の表を想定してみましょう:あなたは、たとえば次のステートメントから得ることができるの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 

、私は次のようにreslutが見えます

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 

を次のようにt1.column_1とt2.column_2を総括したい場合:

id | column_1 | column_2 | cumulated 
------------------------------------ 
1 | 1  | NULL  | NULL 
2 | 2  | 2  | 4 
3 | NULL | 3  | NULL 

私の質問は基本的には:何か数学を行うために0に型キャストする方法はありますか?

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

答えて

121

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

+0

と合体は複数の値を持つことができますか? –

+7

はい...したがって、COALESCE(column1、column2、0)はこれらの値の最初のnull以外を返します。このことは、垂直方向ではなく水平方向に作用することに注意してください。列は同じ表の行に属していなければなりません。 –

+0

@David:よくできました。 –