← Все вопросы

Что делает COALESCE в SQL и когда он реально нужен?

Задан 8 месяцев назад605 просмотров3 ответа
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 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект