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): NULL の可能性がある x を非 NULL の y に置換。

SELECT NVL(HireDate, '11/19/2004')
FROM Employee
Oracle SQL 入門

NULLIF

NULLIF(x, y): xy を比較し、

  • x=y のとき NULL
  • 異なるときは 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: リスト内の最初の非 NULL を返す

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...