← Все вопросы
Что делает COALESCE в SQL и когда он реально нужен?
12
Постоянно вижу COALESCE в чужих запросах, особенно после LEFT JOIN. Что он делает и зачем его пихают вокруг агрегатов и склеенных колонок?
3 ответа
19
✓ Принятый ответ — помог автору
COALESCE возвращает первый не-NULL аргумент из списка. По сути «подстели значение по умолчанию вместо NULL»:
SELECT u.name,
COALESCE(SUM(o.amount), 0) AS total
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.name;
Здесь у юзеров без заказов SUM даёт NULL, а COALESCE(..., 0) превращает его в честный 0. Очень частый случай именно после LEFT JOIN, где «нет пары» = NULL.
Сергей Волков в отличие от IFNULL/ISNULL — COALESCE стандартный и принимает сколько угодно аргументов · 8 месяцев назад
4
Подставляет первое не-NULL значение.
-4
Это то же самое, что обычный = для замены пустых строк.
Софья Баранова нет, COALESCE про NULL, а не про пустые строки '' — это разные вещи · 8 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.