NVL в Oracle SQL — как заменять NULL на значение по умолчанию

🟢 NVL в Oracle SQL. Введение

NVL — это одна из самых часто используемых функций в Oracle SQL. Она позволяет подставить значение по умолчанию вместо NULL, что особенно важно при вычислениях, фильтрации и форматировании вывода.

NVL делает код надёжнее и избавляет от ошибок, связанных с тем, что NULL «гасит» арифметику и сравнения.


🔤 Написание

sql
NVL(выражение, значение_по_умолчанию)
  • Если выражение не NULL, возвращается оно само

  • Если NULL — подставляется второе значение


🔄 Где используется NVL

  • Подстановка значений в SELECT

  • Обработка возможных NULL в вычислениях

  • Отображение данных с «заполнителями»

  • Поддержка стабильной бизнес-логики

  • Устранение ошибок при агрегации


🧪 10 Примеров использования NVL

1️⃣ Заменить NULL на 0

sql
SELECT NVL(commission_pct, 0) AS комиссия
FROM employees;

2️⃣ Заменить NULL на текст

sql
SELECT NVL(phone, 'Нет номера') AS телефон
FROM customers;

3️⃣ NVL в арифметике

sql
SELECT salary + NVL(commission_pct, 0) AS доход
FROM employees;

4️⃣ Использование в ORDER BY

sql
SELECT last_name
FROM employees
ORDER BY NVL(last_name, 'ZZZ');

5️⃣ Форматирование вывода

sql
SELECT employee_id || ' - ' || NVL(nickname, 'Без прозвища') AS описание
FROM employees;

6️⃣ NVL внутри CASE

sql
SELECT
CASE NVL(status, 'NEW')
WHEN 'NEW' THEN 'Создано'
WHEN 'CLOSED' THEN 'Закрыто'
ELSE 'В процессе'
END AS статус
FROM tasks;

7️⃣ NVL с датами

sql
SELECT NVL(completion_date, SYSDATE) AS завершение
FROM projects;

8️⃣ Сравнение с NVL (без NULL-проблем)

sql
SELECT * FROM employees
WHERE NVL(department_id, 0) = 0;

9️⃣ NVL внутри агрегатов

sql
SELECT SUM(NVL(bonus, 0)) AS общий_бонус
FROM employees;

🔟 Замена в подзапросе

sql
SELECT name
FROM customers
WHERE NVL(referrer, 'NONE') = 'NONE';

🧩 Заключение

Функция NVL делает работу с NULL-значениями в Oracle SQL простой и безопасной. Она помогает избежать неожиданного поведения в логике, арифметике и выводе данных.

💡 Запомни:

  • Используй NVL, чтобы избежать NULL в арифметике

  • Хороша для подстановки текста, чисел и даже дат

  • Не путай с NVL2, COALESCE, CASE — у них разное поведение

  • Упрощает SQL-запросы, особенно при генерации отчётов


🔜 Следующая статья:

NUMBER в Oracle SQL — как задавать числовые типы данных и управлять точностью


 

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии