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」でした。
コメント