SQL COALESCE: заменить NULL значением по умолчанию

Категория: Postgresql · Язык: SQL · Обновлено:

COALESCE(value, fallback) возвращает первый аргумент, который не равен NULL. Используйте его для подстановки значения в результате запроса, когда поле отсутствует; для постоянного значения столбца задайте DEFAULT при создании таблицы.

Заменить NULL в результате

SQL
WITH users(name, city) AS (VALUES ('Ира', NULL), ('Антон', 'Казань'))
SELECT name, COALESCE(city, 'Город не указан') AS city
FROM users
ORDER BY name;

Все аргументы COALESCE должны приводиться к совместимому типу.

Избежать деления на ноль через NULLIF

SQL
WITH metrics(total, count) AS (VALUES (10, 2), (5, 0))
SELECT total / NULLIF(count, 0) AS average
FROM metrics;

NULLIF(a, b) возвращает NULL, когда a = b; иначе возвращает a. Результат второй строки здесь будет NULL, а не ошибка деления на ноль.

Функция

Результат

COALESCE(a, b)

Первый аргумент, не равный NULL

NULLIF(a, b)

NULL, если аргументы равны; иначе a

COALESCE(NULLIF(a, 0), 1)

Использует 1 при нуле или NULL в a

Почему условие column = NULL не работает?

Сравнения с NULL дают неизвестное значение. Проверяйте отсутствие через IS NULL, а для вывода используйте COALESCE.