Умовністандарт SQL

NULLIF

Повертає NULL, якщо два значення рівні, а інакше — перше значення.

Синтаксис

NULLIF(<значення>, <з чим порівняти>)

Порівнює два аргументи: рівні — повертає NULL, різні — перший без змін. Звучить дивно, але це зручний спосіб перетворити особливе значення на NULL: нуль перед діленням чи порожній рядок перед COALESCE.

Рівні — NULL, різні — перше значення
SELECT NULLIF(5, 5) AS same,
NULLIF(5, 3) AS different;
samedifferent
NULL5
Ділення без помилки на нуль
SELECT 100 / NULLIF(0, 0) AS result;
result
NULL

Без NULLIF запит SELECT 100 / 0 впаде з помилкою division by zero. А ділення на NULL дає просто NULL.

Разом із COALESCE: порожній рядок — прочерк
SELECT COALESCE(NULLIF('', ''), '—') AS empty_phone,
COALESCE(NULLIF('+44 7700 900123', ''), '—') AS filled_phone;
empty_phonefilled_phone
—+44 7700 900123

Зверни увагу

Назва плутає: NULLIF не замінює NULL, а навпаки — створює його. Замінити NULL на значення — це COALESCE.

Другий аргумент має бути сумісного типу з першим: NULLIF(5, 'a') дасть помилку invalid input syntax for type integer.

Схожі функції

Детально в курсі