トップページ >  Oracle SQL >  null = nullは等しくない
初版2006/02/04: 最終更新日2006/02/04
  null = nullは等しくない
目次
null = nullは等しくない
null = nullは等しくない
where句で、

field1 = field2

とした場合に、field1もfield2も値がnullであれば等しくないと見なされます。
こういった場合に等しいように判定させたい場合は

nvl(field1,-1) = nvl(field2,-1)

というように書くとnull = nullの場合に等しいと判定されるようになりますし、nullでない場合も正しく判定されます。
上記例ではnvl関数を使用してnullであれば-1としていますが、-1はfield1にもfield2にも入ることのない値にしないといけません。
なぜならfield1の値がnullで、field2の値が-1だった場合、等しいと判定されてしまうからです。
ですので、null = nullを等しくさせるために、nvlで指定する代替値はfield1にもfield2にも入ることのない値を指定します。