AccessとSQLServerにおけるIsNull関数の挙動の違い

Pocket

データベースを Access から SQL Server にリプレースする際に IsNULL 関数でクエリがNGになりました。備忘録としてここに残しておきます。

スポンサーリンク

Access における IsNull 関数の挙動

Access で次のようなクエリがありました。あるカラムがNULLであるかを条件にレコードを抽出しています


    select * from table1 where ISNULL(col1)

ただし、このSQL文を SQL Server に対して実行すると「ISNULL関数には引数が2つ必要です」と怒られてしまいます。

SQL Server での ISNULL関数の挙動

SQL Server の ISNULL 関数は、NULL値を、指定された値に置き換えます。NULLであるかを判定する関数ではありません。

紛らわしいですが、仕方がありません。従って、Access と同等のクエリを発行するには、次のようにSQLを書き換える必要があります。


    select * from table1 where col1 IS NULL

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *