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文を活用してみてください!
最後まで読んでいただきありがとうございました。
ディスカッション
コメント一覧
まだ、コメントがありません