Справочник по функциям

NULLIF

Сравнивает два значения и возвращает NULL, если они равны.

PostgreSQL 17.5
NULLIF(value_1, value_2)

Параметры

value_1
Значение, которое возвращается, если аргументы не равны
value_2
Значение для сравнения с value_1

Возвращаемое значение

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

Примеры

Одинаковые значения дают NULL

PostgreSQL 17.5
SELECT NULLIF('SQL Academy', 'SQL Academy');
nullif
<NULL>

Защита от деления на ноль

PostgreSQL 17.5
SELECT 100 / NULLIF(0, 0) AS result;
result
<NULL>

Пустые промокоды не считаются

PostgreSQL 17.5
SELECT COUNT(promo_code) AS not_null,
	COUNT(NULLIF(promo_code, '')) AS filled
FROM orders;
not_nullfilled
297219

Страниц в минуту без деления на ноль

PostgreSQL 17.5
SELECT session_id,
	pages_viewed,
	duration_sec,
	ROUND(pages_viewed * 60.0 / NULLIF(duration_sec, 0), 1) AS pages_per_minute
FROM sessions
ORDER BY duration_sec
LIMIT 5;
session_idpages_viewedduration_secpages_per_minute
s_00020690<NULL>
s_000015100<NULL>
s_00016340<NULL>
s_000134110<NULL>
s_000270240<NULL>

Подробности

Два частых применения: защита от деления на ноль — x / NULLIF(y, 0) вернёт NULL вместо ошибки, и замена пустых строк на NULL — NULLIF(column, ''), чтобы их не считал COUNT и заменял COALESCE.

Смотрите также

Где изучить