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

MySQLでIF-ELSE文を実現する方法!CASE式を使った条件分岐の書き方

MySQLでは、プログラミング言語のようなIF-ELSE文を直接記述することはできませんが、CASE式を使うことで同じように条件分岐を実現できます。CASE式では、指定した条件が真(true)か偽(false)かを評価し、その結果に応じて異なる値を返します。

それでは、具体的な例を見ていきましょう。

1. テーブルの作成

まず、CREATEコマンドを使用してテーブルを作成します。

mysql> create table IfelseDemo
   - > (
   - > id int,
   - > FirstName varchar(100)
   - > );
Query OK, 0 rows affected (0.46 sec)

2. レコードの挿入

次に、INSERTコマンドを使ってレコードを挿入します。

mysql> insert into IfelseDemo values(1,'John');
Query OK, 1 row affected (0.13 sec)

mysql> insert into IfelseDemo values(2,'Carol');
Query OK, 1 row affected (0.31 sec)

mysql> insert into IfelseDemo values(3,'John');
Query OK, 1 row affected (0.11 sec)

mysql> insert into IfelseDemo values(4,'Carol');
Query OK, 1 row affected (0.14 sec)

mysql> insert into IfelseDemo values(5,'John');
Query OK, 1 row affected (0.11 sec)

3. レコードの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from IfelseDemo;

出力結果は以下の通りです。

+------+-----------+
| id   | FirstName |
+------+-----------+
|    1 | John      |
|    2 | Carol     |
|    3 | John      |
|    4 | Carol     |
|    5 | John      |
+------+-----------+
5 rows in set (0.00 sec)

4. CASE式によるIF-ELSEの実装

ここからが本題です。IF-ELSEのように動作するクエリをCASE式で記述すると、以下のようになります。「idが2かつFirstNameが'Carol'」という条件が真の場合は「Welcome Carol」を返し、それ以外の場合は「You are not Carol with id 2」を返します。

mysql> SELECT id, FirstName, (case when (id = 2 and FirstName = 'Carol')
   - > then
   - > 'Welcome Carol'
   - > else
   - > 'You are not Carol with id 2'
   - > end) as Message from IfelseDemo;

実行結果は以下の通りです。

+------+-----------+-----------------------------+
| id   | FirstName | Message                     |
+------+-----------+-----------------------------+
|    1 | John      | You are not Carol with id 2 |
|    2 | Carol     | Welcome Carol               |
|    3 | John      | You are not Carol with id 2 |
|    4 | Carol     | You are not Carol with id 2 |
|    5 | john      | You are not Carol with id 2 |
+------+-----------+-----------------------------+
5 rows in set (0.00 sec)

まとめ

このように、MySQLではCASE式の「WHEN〜THEN〜ELSE〜END」という構文を使うことで、IF-ELSEと同様の条件分岐をSELECT文の中で実現できます。id=2かつFirstName='Carol'である行だけ「Welcome Carol」と表示され、それ以外の行にはELSE句で指定したメッセージが表示されていることが確認できます。複数の条件を分けたい場合はWHEN句を追加していくことで、より柔軟な分岐処理も可能です。

  1. MySQLの終了ステートメント(デリミタ)を変更する方法

    ```html MySQLでは、ストアドプロシージャやトリガーなどを作成する際、処理の中にセミコロン(;)が含まれるため、デフォルトの終了記号のままでは正しく実行できないことがあります。そんなときは、DELIMITERコマンドを使って、文の終了記号を任意の記号に変更しましょう。DELIMITERコマンドの基本構文DELIMITER 任意の記号上記の「任意の記号」の部分には、自由に設定したい記号を指定できます。デフォルトの終了記号は「;」(セミコロン)で、一般的には「//」や「$$」などがよく使われます。実際の使用例それでは、まず終了記号を「//」に変更してテーブルを作成してみましょう。mysq

  2. PHPのif文・elseif文とは?条件分岐の基本と使い方を徹底解説

    はじめに条件に応じて1つ以上の文を実行する「条件分岐」は、あらゆるプログラミング言語において最も重要な機能の一つです。PHPでは、if、else、elseifといったステートメントを使うことで、柔軟な条件分岐を実現できます。まずはif文の基本的な使い方から見ていきましょう。if文の基本構文if (expression)     statement;ifキーワードの後に記述する式は論理式で、評価結果はTRUE(真)またはFALSE(偽)のいずれかになります。式がTRUEと評価されれば次の行の文が実行され、FALSEであればその文は無視されます。条件がTRU