SELECT order_id,
amount - COALESCE(discount, 0) AS net_amount
FROM orders;
Результат:
order_id | net_amount 1 | 950 2 | 1200
SELECT user_id,
COALESCE(phone_verified, phone_profile, phone_order, 'нет данных') AS phone
FROM users;
Результат:
user_id | phone 1 | +79001112233 2 | нет данныхПорешать SQL-задачи в тренажёре →
COALESCE — базовый must-know: вопросы про обработку NULL и «первое непустое значение» встречаются на любом собеседовании. Часто идёт в паре с NULLIF (защита деления на ноль) и с LEFT JOIN, где непарные строки дают NULL.
IFNULL (MySQL/SQLite) и NVL (Oracle) принимают ровно два аргумента и специфичны для своей СУБД. COALESCE — стандарт ANSI, принимает любое число аргументов и работает везде. Для переносимости выбирай COALESCE.
Напрямую не помогает от нуля — от нуля защищает NULLIF(знаменатель, 0). А COALESCE удобна, чтобы заменить итоговый NULL на 0: COALESCE(x / NULLIF(y, 0), 0).
NULL. COALESCE возвращает NULL только когда каждый аргумент NULL, поэтому последним часто ставят гарантированное значение по умолчанию.
null-handling · Условная логика
NULLIF · CASE WHEN · COUNT · CAST · ROUND · CONCAT
Открыть SQL-тренажёр (565 задач) →