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