Функция 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.