データ内にNULL値があると何かと不便です。
AccessでODBC接続している場合など、NULL値を検索すると異様に遅くなったりします。
そんな時には思い切ってNULL値を0に置換するVIEWを作成してそちらに接続した方が早いです。
という訳で、今日はSQLServerでNULL値を0に置換する方法のご紹介です。
目次
SQL ServerでNULLを置換する方法
NULL値を置換するにはIsNull関数を使います。
IsNull関数の構文
IsNull(置換したいフィールド, 置換後の値)
パラメータ(引数)は2つで、置換する対象となるフィールド、置換後の値(文字列・数値など)となっています。
例
SELECT ISNULL(flag, 0) FROM テーブル
サンプルの場合、flagフィールがNULlだった場合、0に置換され、NULLでなかった場合flagの値がそのまま出力されます。
SQL ServerでNULLを置換するその他の方法
単純にNULLを置換するだけであれば、IsNULL関数がお手軽ですが場合によってはNULLの時、また●●のように条件が追加される場合もあります。
その時はIIF関数(SQL Server2012以降)やCASE WHEN文を使います。
IIF関数の例
SELECT IIF(flag IS NULL, 0, flag) FROM テーブル
CASE WHENの例
SELECT CASE WHEN flag IS NULL THEN 0 ELSE flag END FROM テーブル
今回は複数の条件ではなく、IIF関数を使ったNULL置換の例と、CASE WHENを使ったNULL置換の例を紹介しました。
複数の条件については以下の記事を参考にしてください。
あわせて読みたい


【SQL Server】IF文(IIF関数)の使い方|CASE文との違い・使い分けも解説
SQL Serverにおいて、条件に応じて異なる値を返す場合、昔は CASE WHEN 文を使うのが一般的でした。 しかし、SQL Server 2012以降では IIF() 関数が導入され、他の言語…
まとめ
できれば値をセットするルールとしてNULLが入らないようになっている方が後々扱いやすいのですが、難しい場合は取得するときにNULL値を置換してしまいましょう!
コメント