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句を追加しておくと安心です。
-
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文を使って、いくつかの名前データを登録し
-
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)