データベースを 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