こんにちは、イシマルです。
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移行する際には、参考にして頂ければと思います。

TOP
TOP