Функция NULLIF
Функция NULLIF используется для сравнения двух значений.
Если значения равны, функция возвращает NULL,
в противном случае возвращается первое значение.
Часто применяется для предотвращения деления на ноль
и для управления логикой обработки данных.
Синтаксис
SELECT NULLIF(expression_1, expression_2) FROM table_name
Таблицы для примеров
| id | name | salary | bonus |
|---|---|---|---|
| 1 | Ivan | 40000 | 0 |
| 2 | Petr | 45000 | 5000 |
| 3 | Sergey | 42000 | 0 |
| 4 | Olga | 55000 | 7000 |
| 5 | Andrey | 60000 | 0 |
Пример
Давайте используем функцию NULLIF для преобразования значения бонуса в NULL, если его значение равно нулю:
SELECT name, bonus,
NULLIF(bonus, 0) AS bonus_value
FROM employees
ORDER BY id
Результат выполнения кода:
| name | bonus | bonus_value |
|---|---|---|
| Ivan | 0 | NULL |
| Petr | 5000 | 5000 |
| Sergey | 0 | NULL |
| Olga | 7000 | 7000 |
| Andrey | 0 | NULL |
Пример
Давайте используем NULLIF для предотвращения деления на ноль при вычислении отношения зарплаты к бонусу:
SELECT name,
salary / NULLIF(bonus, 0.0) AS salary_ratio
FROM employees
ORDER BY id
Результат выполнения кода:
| name | salary_ratio |
|---|---|
| Ivan | NULL |
| Petr | 9 |
| Sergey | NULL |
| Olga | 7.8571 |
| Andrey | NULL |