NULLIF в PostgreSQL: сравнение и замена значений

Функция NULLIF в PostgreSQL используется для сравнения двух выражений и возвращает значение NULL, если оба выражения равны. Если выражения различаются, возвращается значение первого выражения.

Синтаксис NULLIF

Общий синтаксис использования функции выглядит следующим образом:

NULLIF(выражение_1, выражение_2);
  • Если выражение_1 равно выражение_2, результатом будет NULL.
  • Если выражения различаются, функция возвращает выражение_1.

Примеры использования NULLIF

Пример замены одинаковых значений на NULL

Допустим, есть таблица сотрудников, и нужно заменить значение зарплаты на NULL, если зарплата равна 0:

SELECT employee_name, NULLIF(salary, 0) AS adjusted_salary
FROM employees;

Этот запрос вернёт имя сотрудника и значение зарплаты, но для сотрудников с зарплатой 0 будет отображён NULL.

Использование NULLIF для предотвращения ошибок деления на ноль

Использование NULLIF помогает предотвратить ошибки при делении:

SELECT total_sales / NULLIF(number_of_sales, 0) AS average_sale
FROM sales;

Если значение number_of_sales равно 0, функция вернёт NULL, что предотвратит ошибку деления на ноль.

NULLIF и COALESCE

Функция NULLIF часто используется совместно с функцией COALESCE, чтобы заменить результат NULL на другое значение:

SELECT COALESCE(NULLIF(bonus, 0), 100) AS final_bonus
FROM employees;

В этом примере, если бонус равен 0, то результатом будет значение 100.