Oracle SQLで 空文字の判定

 Postgre で使用していた SQL文を Oracle へ持ってきて動かなかったのでメモ

プログラムから SQL雛形に置換文字列を埋め込んで、それを実行させていたため事故の無いようデータが空の場合、スキップさせるため WHER節へ

WHERE ('$DATA$' <> '') AND ... みたいなのを組み込んでいた
($DATA$ には文字列が置換される)

これを Postgre から Oracle へ持ってきた所、常に false となってしまいデータが更新されない
('AAA' != '') や ('AAA' <> '') は、常にfalse が返る

Oracle で空文字を判定するには IS NULL や IS NOT NULL を使うらしい

WHERE ('$DATA$' IS NOT NULL) AND ... 

コメント