1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQLパフォーマンス詳解 2章: where句_12.OracleにおけるNULL

Posted at

2章: where句

12.OracleにおけるNULL

1. NULLの基本概念

SQL標準では NULLは「値」ではなく「未知・存在しない値」。
そのため

  • = NULL は使えない
  • IS NULL / IS NOT NULL を使う

2. Oracle特有のNULLの扱い(最大の注意点)

空文字列 '' を NULLとして扱う

  • Oracleでは 空文字列 = NULL
  • VARCHAR列に '' を保存すると、実際には NULLが格納される
  • 他DB(PostgreSQL / MySQL など)とは挙動が異なる

3. 文字列連結時の挙動

dummy || ''
dummy || NULL
  • Oracleでは どちらも元の文字列を返す
  • 本来期待される「NULLになる」挙動ではない

4. 危険性・問題点

  • 空文字とNULLの区別ができない

  • アプリケーションや他DBとの移植時にバグの原因になる

  • NULL判定を誤ると、意図しない検索結果になる

5. インデックスとの関係(予告的ポイント)

  • Oracleでは NULLはインデックス上で特別扱い
  • NULL値は通常 B-treeインデックスに格納されない
    → WHERE句とインデックス利用に影響する

まとめ

Oracleでは「空文字列 = NULL」という非標準仕様があり、検索・連結・インデックスの挙動に注意が必要

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?