SQL Server

SQL ServerでNULLを置換する方法

SQLの文法

データ内に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の文法
【SQL Server】SQL文の中で条件分岐させる2つの方法SQLSeverで条件分岐を記述する方法です。CASE文を使う方法とIIF文を使う方法がありますので状況に応じてご利用ください。...

 

スポンサーリンク
 

まとめ

できれば値をセットするルールとしてNULLが入らないようになっている方が後々扱いやすいのですが、難しい場合は取得するときにNULL値を置換してしまいましょう!

ABOUT ME
アズビーパートナーズ
プログラマー→社内SE→SIerのお仕事をしています。 メーカー勤務を経て、中小企業の社内SE、フリーランスなど様々な形態で働いてきました。 業務上生まれた困った…を解決してきたTipsを備忘録も兼ねて公開しています。 困っている誰かのお役に立てれば幸いです。