ОсновыНачальный
COALESCE / NULLIF
COALESCE возвращает первый не-NULL аргумент. NULLIF возвращает NULL если два аргумента равны.
Синтаксис
COALESCE(value, default) NULLIF(value, unwanted_value)
Объяснение
COALESCE(a, b, c) — вернёт первое не-NULL значение. Удобно для подстановки значений по умолчанию.
NULLIF(a, b) — вернёт NULL если a=b, иначе a. Классический трюк: NULLIF(count, 0) для избежания деления на ноль: value / NULLIF(count, 0).
Пример
-- Подстановка значений по умолчанию SELECT COALESCE(nickname, first_name, 'Аноним') AS display_name, COALESCE(phone, email) AS contact FROM users; -- Избежать деления на ноль SELECT total / NULLIF(count, 0) AS avg_per_item FROM stats;
Связанные термины
Анекдоты по теме
Почему NULL не приглашают на вечеринки? Потому что он никогда не знает, пришёл он или нет, а когда его спрашивают «Ты придёшь?», он отвечает: «NULL».
Таблица Users пишет таблице Orders: — Ты забыл про меня. Мы не связаны. Orders: — У тебя нет внешнего ключа ко мне. Users: — Значит, я буду NULL в твоей жизни. DBA: — Это LEFT JOIN, успокойтесь.
— Зачем нужен ANTI JOIN? — Найти строки из левой таблицы, которых НЕТ в правой. — Пример? — Пользователи без заказов: SELECT u.* FROM users u WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id); — Или через LEFT JOIN WHERE o.id IS NULL.