MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのCASE式とは?仕組みと2つの構文を実例付きで解説

MySQLのCASE式は、プログラミング言語におけるswitch文と同じような働きをする条件分岐の仕組みです。SELECT文の中で値を評価し、条件に応じて異なる結果を返すことができます。

CASE式には主に2つの書き方があります。それぞれの構文と実際の使用例を見ていきましょう。

ケース1:比較条件(検索CASE)

1つ目の構文は、任意の比較条件を記述できる形式です。複数のWHEN句を連ねることで、柔軟な条件分岐が可能になります。

CASE
    WHEN 比較条件 THEN 値1
    WHEN 比較条件 THEN 値2
    ...
    ELSE デフォルト値
END AS 別名;

実行例

実際にSELECT文で動作を確認してみます。次のクエリでは、2つの条件を評価しています。

mysql> SELECT
    -> CASE WHEN 45 < 55 THEN '55 is greater than 45'
    -> WHEN 10 != 11 THEN '10 is not equal to 11'
    -> ELSE 'Default case'
    -> END AS Result;

出力結果

+-----------------------+
| Result                |
+-----------------------+
| 55 is greater than 45 |
+-----------------------+
1 row in set (0.00 sec)

この例では、最初の条件「45 < 55」が真と判定されたため、対応する文字列が返されています。CASE式は上から順に条件を評価し、最初に一致したWHEN句の値を返します。どの条件にも当てはまらない場合はELSE句の値が返されます。

ケース2:単一カラムへの条件指定(単純CASE)

2つ目の構文は、特定の1つのカラムの値だけを評価したい場合に使います。比較対象のカラムをCASEの直後に指定し、その値との一致を順番にチェックしていきます。

CASE カラム名
    WHEN 条件値1 THEN 結果1
    WHEN 条件値2 THEN 結果2
    ...
    ELSE デフォルト値
END;

サンプルテーブルの作成

この構文を理解するために、まずテーブルを作成します。

mysql> CREATE TABLE CaseDemo
    -> (
    -> Id int,
    -> Name varchar(100)
    -> );
Query OK, 0 rows affected (0.93 sec)

INSERTコマンドでレコードを挿入します。

mysql> INSERT INTO CaseDemo VALUES(1,'John');
Query OK, 1 row affected (0.43 sec)

mysql> INSERT INTO CaseDemo VALUES(2,'Sam');
Query OK, 1 row affected (0.16 sec)

SELECT文でテーブル内の全レコードを確認します。

mysql> SELECT * FROM CaseDemo;

出力結果

+------+------+
| Id   | Name |
+------+------+
|    1 | John |
|    2 | Sam  |
+------+------+
2 rows in set (0.00 sec)

単純CASEの実行例

Nameカラムの値に応じて結果を切り替えるクエリは以下の通りです。

mysql> SELECT CASE name
    -> WHEN 'John' THEN 'His name is John'
    -> WHEN 'Sam' THEN 'His name is Sam'
    -> ELSE -1
    -> END AS Result
    -> FROM CaseDemo;

出力結果

+------------------+
| Result           |
+------------------+
| His name is John |
| His name is Sam  |
+------------------+
2 rows in set (0.00 sec)

まとめ

MySQLのCASE式には、自由な条件式を書ける「検索CASE」と、特定のカラムの値を照合する「単純CASE」の2種類があります。いずれも上から順に条件を評価し、最初にマッチした結果を返す点が共通しています。データの分類や表示内容の変換など、SQLだけで柔軟な条件分岐を実現したい場面で非常に役立つ機能です。

  1. データスクレイピングの仕組みを徹底解説!自動化の基本と始め方

    この記事を読んでいるということは、データスクレイピングのメリットについてすでに耳にしたことがあるかもしれません。自動化された技術を活用すれば、面倒な手作業なしに大量のデータを収集できる――そんな話です。では、データスクレイピングは実際にどのように機能するのでしょうか?難易度は高いのか、それとも誰でも習得できるのでしょうか?純粋な好奇心から知りたい方もいれば、自分のビジネスや副業に活用できるかどうか検討している方もいるでしょう。いずれにしても、この記事を読み終える頃には、データスクレイピングの概要、スクレイピングプロセスの実際の仕組み、そして始め方まで、しっかりと理解できるようになっています。そ

  2. Snapchatの仕組みとは?基本用語から使い方まで初心者向けに徹底解説

    モバイルメッセージアプリの世界に革命をもたらしたと言えば、それはSnapchat(スナップチャット)についての言葉として決して大げさではありません。Snapchatが登場する以前、友達とこんなユニークな方法でコミュニケーションができると想像した人はほとんどいませんでした。送った画像や動画が自動的に消えるという「自己消滅型メッセージ」という独自のコンセプトにより、Snapchatは従来のメッセージアプリやSNSとは一線を画す存在となっています。2011年の登場以来、Snapchatは1日あたり1億8000万人以上のアクティブユーザーを抱える、世界で最も人気のあるアプリの一つへと成長しました。また