LoginSignup
1
1

More than 3 years have passed since last update.

SQL での null の注意点をおさらいする

Last updated at Posted at 2019-06-24

はじめに

null を検索対象とする場合は、is null や is not null を使う必要があります。null は、その項目に空値が格納されているのではなく、その項目の値がメモリに存在しない状態であるためです。
存在しないものは検索できないので、原則 null は、検索条件(= や <> など)の検索対象になりません。

気を付けたい SQL

対象テーブル(T)

Q R
1 2
3 4
null 5

NULL が含まれない SQL (1)

select * from T where Q <> 3

Q R
1 2

NULL が含まれない SQL (2)

select count(Q) from T

count(Q)
2

NULL が含まれない SQL (3)

select SUM(Q) from T

SUM(Q)
4

NULL になっちゃう SQL

select Q + R from T

Q + R
3
7
null

おまけ(SQL Server)

  • isnull(A, B):Aの値がNULLでない場合はAを、NULLの場合はBを返す。
  • nullif(A, B):A=Bの場合は、NULLを、A<>Bの場合はAを返す。

case when 分母 IS NULL OR 分母 = 0 then 分子 else 分子/分母 end

分子 / isnull(nullif(分母,0),1)

おわりに

DBMSによっては、「= null」でも検索対象となる場合があります。
こういったお助け機能があるせいか、null を意識していない SQL がたくさんあったので、復習がてらにまとめてみました。

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