orcleのnull挙動
SQLを作っていて、値がnullだったら対象にしない、というSQLを作っており、
dat is not null
その後、nullじゃないけど空文字で入っている、と言う場合も考慮して、以下のようにしました。
dat is not null and dat != ''
これをやると、データが全く出てこなくなる。
あれ? と思って色々試した結果、以下の情報にたどり着きました。
oracleは空文字の場合はnull扱いになる。
nullと比較をis not null以外でやろうとすると想像していない挙動になる。
結論から書くと、is not null をした時点で空文字の事を気にしなくて良くなっているのですが、
調査SQLを作ってもよくわからず、調査に時間が掛ったので、覚える意味でもメモ。
参考
http://blog.livedoor.jp/i_am_best/archives/7870002.html
SQLを作っていて、値がnullだったら対象にしない、というSQLを作っており、
dat is not null
その後、nullじゃないけど空文字で入っている、と言う場合も考慮して、以下のようにしました。
dat is not null and dat != ''
これをやると、データが全く出てこなくなる。
あれ? と思って色々試した結果、以下の情報にたどり着きました。
oracleは空文字の場合はnull扱いになる。
nullと比較をis not null以外でやろうとすると想像していない挙動になる。
結論から書くと、is not null をした時点で空文字の事を気にしなくて良くなっているのですが、
調査SQLを作ってもよくわからず、調査に時間が掛ったので、覚える意味でもメモ。
参考
http://blog.livedoor.jp/i_am_best/archives/7870002.html
コメント