OracleとSQL ServerのSQLを同時に書いているとついnullの処理でうっかりしてしまう・・・
SQL Serverで、nullの場合に他の値に置き換える関数は、isnull。Oracleは、nvl。
まぁ、これは簡単なことなんだが、nullの時に空文字に置き換えようと、SQL Serverで以下のように書いていると
isnull(A項目, '')
つい、Oracleでも、
nvl(A項目, '')
と書いてしまう。
これは全く意味がなくて、A項目がnullならnullにnvlで置き換えていることになる(笑)
Oracleは空文字とnullが同じ扱いなので、つまり、空文字はnullになってしまうからである。
よって、
nvl(A項目, ' ')
と、nullの時には空白に置き換えなければならない。
この、
nvl(A項目, '')
は、わかりにくいバグで、実行時に初めて発覚するからやっかいである。
注意!注意! 自戒の意味を込めて。