SQLのCASE文とは?|条件分岐の基本と実用例
SQLに手こずっているとてぃです。今日はSQLでの条件分岐「CASE文」について、初心者にも分かりやすく解説します。
SQLのCASE文とは?
CASE文は、SQLで条件分岐を実現するための構文です。
SELECT文の中で「もし〇〇なら△△、そうでなければ□□」のような処理を1回のSQLで実現できます。
他のプログラミング言語のif-elseやswitch文に似ていて、SQLの集計やデータ加工で非常に便利です。
CASE文の基本構文
SELECT
  カラム名,
  CASE
    WHEN 条件1 THEN 値1
    WHEN 条件2 THEN 値2
    ...
    ELSE デフォルト値
  END AS 新しいカラム名
FROM テーブル名;
カレーの材料データでのCASE文例
例として「カレーの材料」を管理するテーブルを使い、CASE文で材料ごとに表示を変えるSQLを書いてみます。
SELECT
  材料,
  CASE
    WHEN 材料 = '人参' THEN '野菜'
    WHEN 材料 = '玉ねぎ' THEN '野菜'
    WHEN 材料 = '鶏肉' THEN '肉類'
    ELSE 'その他'
  END AS 材料分類
FROM ルーテーブル;
このようにCASE文を使うことで、材料ごとに分類名を付与したり、条件によって表示内容を変えたりできます。
CASE文の応用例
- 数値の範囲による評価
CASE WHEN 点数 >= 80 THEN '優' WHEN 点数 >= 60 THEN '良' ELSE '不可' END - NULL値の置換
CASE WHEN 電話番号 IS NULL THEN '未登録' ELSE 電話番号 END - 集計関数と組み合わせて使う
SUM(CASE WHEN 性別 = '男' THEN 1 ELSE 0 END) AS 男性人数 
CASE文のポイント・注意点
- SELECT句だけでなく、ORDER BYやGROUP BY、HAVING句でも利用可能
 - ELSE句を省略すると、どの条件にも当てはまらない場合はNULLになる
 - 複雑な条件分岐も1回のSQLで実現でき、パフォーマンスやメンテナンス性が向上
 - SQL方言によって微妙な書き方の違いがある場合もあるので注意(MySQL/Oracle/PostgreSQLなど)
 
まとめ
- CASE文はSQLで条件分岐を実現するための強力な構文
 - 1回のSQLで様々な条件による値の切り替えができる
 - 集計やデータ加工、分類など多様なシーンで活用可能
 - 他のプログラミング言語のif-elseやswitch文と似た感覚で使える
 
今回はカレーの材料を例にCASE文の使い方を紹介しました。
SQLの条件分岐で悩んだら、ぜひCASE文を活用してみてください!
最後まで読んでいただきありがとうございました。


ディスカッション
コメント一覧
まだ、コメントがありません