SqlServerの空文字の扱いについて

posted in: SQLServer | 0

こんにちは、イシマルです。
OracleからSqlServerに移行する業務を行う中で、
SqlServerの空文字の扱いについて、覚えたことをまとめたいと思います。

OracleはNULL、SqlServerにはNULLと空文字がある

Oracleには空文字という概念がないですが、SqlServerではNULLと空文字は区別されます。

Oracleの場合

hesss_oracle_nullselect

SqlServerの場合

hesss_sqlserver_nullselect

以上のように
Oracleでは 空文字、NULLもすべてNULL
SqlServerでは 空文字は空文字、NULLはNULL
というような扱いになります。

SqlServerの型ごとの空文字の扱いについて

SqlServerの文字列型、数値型、日付型それぞれの空文字の扱いを確認してみました。

文字列型(VARCHAR)の場合

空文字として扱われます。
hesss_sqlserver_varcharselect

数値型(NUMERIC)の場合

文字列型を数値型に変換しようとし、エラーになります。
hesss_sqlserver_numericselect

日付型(DATETIME)の場合

空文字を指定した場合、日付型の初期値に変換されます。
hesss_sqlserver_datetimeselect

Oracleと同じ扱いにする場合の対応方法について

OracleからSqlServerにデータ移行する際には、上記のようなSqlServerの空文字の扱いを考慮して、空文字をNULLに変換してあげると、移行前のOracleと同じ動作になります。

hesss_sqlserver_allselect

OracleからSqlServer移行する際には、参考にして頂ければと思います。

LINEで送る
Pocket