SQLのCASE文とは?|条件分岐の基本と実用例

2025年5月13日

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文を活用してみてください!
最後まで読んでいただきありがとうございました。

日常

Posted by xxoruioxx