MySQL:Typecasting NULL为0

时间:2009-09-17 21:01:58

标签: sql mysql casting

让我们假设下表(例如几个内连接语句的结果):

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

1 个答案:

答案 0 :(得分:138)

使用IFNULL(column, 0)将列值转换为零。或者,COALESCE函数将执行相同的操作,除了(1)COALESCE符合ANSI,IFNULL不符合,(2)COALESCE采用任意数量的列/值并将返回传递给它的第一个非null值。