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