CASE句
説明
CASE 句は、指定された条件に基づいて特定の値を返すルールを使用します。これは、他のプログラミング言語における if/else 文に似ています。
構文
CASE [ expression ] { WHEN boolean_expression THEN then_expression } [ ... ]
[ ELSE else_expression ]
END
パラメータ
-
boolean_expression
結果の型が
booleanに評価される任意の式を指定します。2つ以上の式は、論理演算子(AND、OR)を使用して組み合わせることができます。 -
then_expression
boolean_expressionの条件に基づいて、THEN 式を指定します。then_expressionとelse_expressionはすべて同じ型であるか、共通の型に変換可能である必要があります。 -
else_expression
デフォルトの式を指定します。
then_expressionとelse_expressionはすべて同じ型であるか、共通の型に変換可能である必要があります。
例
CREATE TABLE person (id INT, name STRING, age INT);
INSERT INTO person VALUES
(100, 'John', 30),
(200, 'Mary', NULL),
(300, 'Mike', 80),
(400, 'Dan', 50);
SELECT id, CASE WHEN id > 200 THEN 'bigger' ELSE 'small' END FROM person;
+------+--------------------------------------------------+
| id | CASE WHEN (id > 200) THEN bigger ELSE small END |
+------+--------------------------------------------------+
| 100 | small |
| 200 | small |
| 300 | bigger |
| 400 | bigger |
+------+--------------------------------------------------+
SELECT id, CASE id WHEN 100 then 'bigger' WHEN id > 300 THEN '300' ELSE 'small' END FROM person;
+------+-----------------------------------------------------------------------------------------------+
| id | CASE WHEN (id = 100) THEN bigger WHEN (id = CAST((id > 300) AS INT)) THEN 300 ELSE small END |
+------+-----------------------------------------------------------------------------------------------+
| 100 | bigger |
| 200 | small |
| 300 | small |
| 400 | small |
+------+-----------------------------------------------------------------------------------------------+
SELECT * FROM person
WHERE
CASE 1 = 1
WHEN 100 THEN 'big'
WHEN 200 THEN 'bigger'
WHEN 300 THEN 'biggest'
ELSE 'small'
END = 'small';
+------+-------+-------+
| id | name | age |
+------+-------+-------+
| 100 | John | 30 |
| 200 | Mary | NULL |
| 300 | Mike | 80 |
| 400 | Dan | 50 |
+------+-------+-------+