【SQL Server】ISNULL・CASEでNullを置き換える

SQL ServerのISNULL・CASEについて。

この記事の内容はコチラです

  • 「ISNULL」の使い方
  • 「CASE」の使い方
  • Nullを別の文字列に置き換える

今回は、SQL Serverの「ISNULL」と「CASE」について紹介します!

Nullを置き換える

SQL ServerでNullを別の値に置き換えて置換する方法はいくつかありますが、ここでは代表的な「ISNULL」と「CASE」を取りあげます。ちなみに、「NVL」はOracleのみでSQL Serverにはありません。

1. ISNULLでNullを置換する

--ISNULLの構文
ISNULL(列,変換したい文字列)

ISNULLの第1パラメータの値がNULLであれば、第2パラメータの文字列に変換します。NULLでなければ、第1パラメータの値をそのまま返します。

--ISNULLでscntのNULLを0に置換する
SELECT ISNULL(scnt,0) FROM table1;
[結果]
0

ここでは「ISNULL」をつかってscnt列にNullがあれば0に置換しました。null以外の値はそのまま表示されます。

2. CASEでNullを置換する

--CASEの構文
CASE WHEN 条件1 THEN 結果1 ELSE 結果2 END

「CASE」は条件分岐できるのが特徴です。「条件1」に合致すれば「結果1」を返し、合致しなければ「結果2」を返します。「CASE」は他の言語でいうところのif文に相当します。

--CASEでNULLを0に置換する
SELECT CASE WHEN scnt IS NULL THEN 0 ELSE scnt END 
FROM table1;
[結果]
0

ここでは「CASE」をつかってscnt列にNullがあれば0に置換しました。「case」でNULLの比較は「IS NULL」とします。

null以外の値はそのまま表示されます。

「ISNULL」と「CASE」の比較

「ISNULL」と「CASE」がありますが、CASEの方が何かと便利ですね。

「ISNULL」はNULLの置換しかできませんが、「CASE」であればNULL以外でも置換できますし。「CASE」はSQLの中でも非常に使い勝手の優れた便利な構文です。「CASE」の方が柔軟性が高いため、どちらか迷ったら「CASE」を使うことをおすすめします!

以上、SQL ServerでNullを別の値に置き換える「ISNULL」と「CASE」でした。

コメント