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

MySQLクエリでCASE WHEN句の式が動作しないときの正しい書き方

MySQLでCASE WHEN文を正しく使用する方法

MySQLでCASE WHEN文を活用すれば、条件に応じて異なる値を返す柔軟なクエリを作成できます。ここでは、CASE WHEN文を正しく記述する手順を、実際のサンプルとともに解説します。

1. テーブルの作成

まずはサンプル用のテーブルを作成します。

mysql> create table demo58
-> (
-> id int not null auto_increment primary key,
-> first_name varchar(20),
-> last_name varchar(20)
-> );
Query OK, 0 rows affected (2.15 sec)

2. レコードの挿入

次に、INSERTコマンドを使ってデータを登録します。

mysql> insert into demo58(first_name,last_name) values('John','Doe');
Query OK, 1 row affected (0.12 sec)

mysql> insert into demo58(first_name,last_name) values('David','Smith');
Query OK, 1 row affected (0.29 sec)

mysql> insert into demo58(first_name,last_name) values('John','Brown');
Query OK, 1 row affected (0.11 sec)

mysql> insert into demo58(first_name,last_name) values('David','Miller');
Query OK, 1 row affected (0.26 sec)

3. データの確認

SELECT文で登録したレコードを表示してみましょう。

mysql> select *from demo58;

実行すると、次のような結果が得られます。

+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
|  1 | John       | Doe       |
|  2 | David      | Smith     |
|  3 | John       | Brown     |
|  4 | David      | Miller    |
+----+------------+-----------+
4 rows in set (0.15 sec)

4. CASE WHENを使った条件分岐クエリ

CASE WHEN句の中で式を使用するクエリは、以下のように記述します。

mysql> select
-> (
-> case
-> when (first_name = "John") then 'Carol'
-> when (last_name = "Smith") then 'Doe'
-> end
-> ) RESULT
-> from demo58;

実行結果

+--------+
| RESULT |
+--------+
| Carol  |
| Doe    |
| Carol  |
| NULL   |
+--------+
4 rows in set (0.00 sec)

結果のポイント

CASE WHENは上から順に条件を評価し、最初に一致したWHEN句のTHENの値を返します。上記の例では、first_nameが「John」なら「Carol」、そうでなければlast_nameが「Smith」なら「Doe」という判定になっています。

注目すべきは最後の行です。「David Miller」はどちらの条件にも一致しないため、ELSE句が指定されていないケースではNULLが返される点に注意してください。NULLを避けたい場合は、「else '該当なし'」のようにELSE句を追加しておくと安心です。

  1. MySQLクエリでLIKE句を2回使う方法|OR条件で複数パターンを検索する

    MySQLでは、LIKE句を1つのクエリ内で2回以上使用することで、複数のパターンに一致するレコードを柔軟に抽出できます。この記事では、実際にテーブルを作成し、LIKE句を2回組み合わせた検索クエリの書き方を手順を追って解説します。 1. サンプルテーブルを作成する まず、検索対象となるテーブルを作成します。 mysql> create table DemoTable2009 ( Name varchar(20) ); Query OK, 0 rows affected (0.51 sec) 2. テーブルにレコードを挿入する INSERT文を使って、いくつかの名前データを登録し

  2. MySQLクエリでCASE WHEN句の式が動作しないときの正しい書き方

    MySQLでCASE WHEN文を正しく使用する方法 MySQLでCASE WHEN文を活用すれば、条件に応じて異なる値を返す柔軟なクエリを作成できます。ここでは、CASE WHEN文を正しく記述する手順を、実際のサンプルとともに解説します。 1. テーブルの作成 まずはサンプル用のテーブルを作成します。 mysql> create table demo58 -> ( -> id int not null auto_increment primary key, -> first_name varchar(20), -> last_name varchar(20)