Работа со значениями NULL

Введение в Oracle SQL

Hadrien Lacroix

Content Developer

Что такое значения NULL?

  • Отсутствие значения
  • Не то же самое, что 0
  • Арифметические выражения с NULL дают NULL
    • NULL + 10 = NULL
  • Агрегатные функции обычно игнорируют NULL
    • COUNT не считает NULL в столбцах
Введение в Oracle SQL

Зачем нам NULL-значения?

Реальные данные несовершенны.

  • Очистка данных
  • Анализ пропущенных данных
Введение в Oracle SQL

Проверка значения на NULL

= нельзя использовать для проверки NULL

Вместо этого используйте:

  • IS NULL
    SELECT * FROM Customer WHERE LastName IS NULL
    
  • IS NOT NULL
    SELECT * FROM Customer WHERE LastName IS NOT NULL
    
Введение в Oracle SQL

NVL

NVL(x, y): заменяет x, которое может содержать NULL, на y — ненулевое значение.

SELECT NVL(HireDate, '11/19/2004')
FROM Employee
Введение в Oracle SQL

NULLIF

NULLIF(x, y): сравнивает x и y, возвращает

  • NULL, если x=y
  • x, если значения не равны
SELECT c.CustomerId, i.BillingCity, c.City, NULLIF(i.BillingCity, c.City) 
FROM Invoice i, Customer c
| CustomerId | BillingCity | City      | NULLIF |
|------------|-------------|-----------|--------|
| 48         | Oslo        | Amsterdam | Oslo   |
| 49         | Boston      | Vienne    | Boston |
| 59         | London      | London    | NULL   |
Введение в Oracle SQL

COALESCE

COALESCE: возвращает первое ненулевое значение из списка

SELECT CustomerId, COALESCE(phone, email, fax) AS ContactMethod
FROM Customer
| CustomerId | ContactMethod           |
|------------|-------------------------|
| 59         | +91 080 22289999        |
| 58         | [email protected] |
| 57         | +56 (0)2 635 4444       |
Введение в Oracle SQL

Давайте потренируемся!

Введение в Oracle SQL

Preparing Video For Download...