Короткий ответ
Функция COALESCE возвращает первый аргумент, который не равен NULL. Выражение COALESCE(email, 'не указан') меняет только отображение результата и не обновляет таблицу.
Как это работает подробнее
Аргументов может быть несколько: COALESCE(work_phone, mobile_phone, 'нет телефона'). Они проверяются слева направо, а при отсутствии ненулевого аргумента результат тоже равен NULL.
Типы аргументов должны быть совместимы или приводиться к общему типу. Для числовых расчётов COALESCE(discount, 0) предотвращает распространение NULL по арифметическому выражению.
Пример кода
query.sql
SELECT
customer_id,
COALESCE(email, 'не указан') AS email_display
FROM customers
ORDER BY customer_id;Что использовать на практике
- Отчётная подпись. Подставляйте понятный текст только в финальном слое представления.
- Вычисления. Подставляйте ноль лишь тогда, когда по бизнес-смыслу отсутствие значения действительно означает ноль.
Подводные камни
- Искажение смысла. Неизвестная скидка и скидка, равная нулю, могут быть разными состояниями.
- Несовместимые типы. Нельзя без явного преобразования смешивать дату, число и произвольный текст.