こんにちは、イシマルです。
OracleからSqlServerに移行する業務を行う中で、
SqlServerの空文字の扱いについて、覚えたことをまとめたいと思います。
OracleはNULL、SqlServerにはNULLと空文字がある
Oracleには空文字という概念がないですが、SqlServerではNULLと空文字は区別されます。
Oracleの場合
SqlServerの場合
以上のように
Oracleでは 空文字、NULLもすべてNULL
SqlServerでは 空文字は空文字、NULLはNULL
というような扱いになります。
SqlServerの型ごとの空文字の扱いについて
SqlServerの文字列型、数値型、日付型それぞれの空文字の扱いを確認してみました。
文字列型(VARCHAR)の場合
空文字として扱われます。
数値型(NUMERIC)の場合
文字列型を数値型に変換しようとし、エラーになります。
日付型(DATETIME)の場合
空文字を指定した場合、日付型の初期値に変換されます。
Oracleと同じ扱いにする場合の対応方法について
OracleからSqlServerにデータ移行する際には、上記のようなSqlServerの空文字の扱いを考慮して、空文字をNULLに変換してあげると、移行前のOracleと同じ動作になります。
OracleからSqlServer移行する際には、参考にして頂ければと思います。