【SQL】CASE~WHEN~ELSEで条件分岐

SQL文のCASE~WHEN~ELSEで条件分岐を実装する方法について、ソースコード付きで紹介します。

【CASEとは】条件分岐

SQLでは、CASE文を用いることで、「条件分岐」を実装できます。

書式

CASEを使うには「CASE」~「END」の間に条件分岐を記述します。

SELECT
  [抽出するカラム名]
  CASE
      WHEN [条件①] THEN [条件①を満たした場合の表示内容]
      WHEN [条件②] THEN [条件②を満たした場合の表示内容]
      ELSE [いずれの条件も満たしていない場合の表示内容]
  END As [表示内容のカラム名]
FROM [テーブル名];

【使用例】CASE文のサンプルコード

SELECT、INSERT、FROMでテーブルの作成、データの追加、要素の抽出をしてみます。

/* テーブルを作成 */
create table student(id int, class varchar(20), point int, rankId int);

/* テーブルにデータを追加 */
insert into student values(1, 'Archer', 90, 1);
insert into student values(2, 'Lancer', 75,2);
insert into student values(3, 'Saber', 60, 1);
insert into student values(4, 'Caster', 75, 2);
insert into student values(5, 'Asassin', 45, 3);
insert into student values(6, 'Berserk', 55, 3);
insert into student values(7, 'Ruler', 70, 1);

/* テーブルから全てのカラムを抽出 */
SELECT * FROM student;

/* 抽出結果

    id  class   point   rankId
1   1   Archer  90  1
2   2   Lancer  75  2
3   3   Saber   60  1
4   4   Caster  75  2
5   5   Asassin 45  3
6   6   Berserk 55  3
7   7   Ruler   70  1
*/

/* 得点に応じてレベルを決めて抽出 */
SELECT
  class, point,
  CASE
      WHEN 80 <= point THEN 'Lv3'
      WHEN 70 <= point THEN 'Lv2'
      WHEN 60 <= point THEN 'Lv1'
      ELSE 'Lv0'
  END As Level
FROM student;

/*
    class   point   Level
1   Archer  90  Lv3
2   Lancer  75  Lv2
3   Saber   60  Lv1
4   Caster  75  Lv2
5   Asassin 45  Lv0
6   Berserk 55  Lv0
7   Ruler   70  Lv2
*/
- 関連記事
- 【SQL文入門】基本的な使い方まとめ

コメント