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 Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>