Подтвердить что ты не робот

MySQL: Typingasting 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

Резул выглядит следующим образом:

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 остается a NULL.

4b9b3361

Ответ 1

Используйте IFNULL(column, 0) для преобразования значения столбца в ноль. В качестве альтернативы функция COALESCE будет делать то же самое, за исключением того, что (1) COALESCE является ANSI-совместимым, IFNULL не является, и (2) COALESCE принимает произвольное количество столбцов/значений и возвращает первый не- -неверное значение, переданное ему.