単純 CASE 式では、1 つの入力式の値に基づいて結果を返すことができます。いずれの比較値も一致しなかった場合のデフォルトの結果も定義できます。
この記事の内容:例
プレミアムな顧客にカスタマイズされたリンクを提供する場合は、以下のように指定します。
CASE Premium Status
WHEN "Platinum" THEN CONCAT(Site URL, "platinum_welcome.html")
WHEN "Gold" THEN CONCAT(Site URL, "gold_welcome.html")
WHEN "Silver" THEN CONCAT(Site URL, "silver_welcome.html")
ELSE CONCAT(Site URL, "welcome.html")
END
単純 CASE 式の仕組み
単純 CASE 式は、以下の要素で構成されます。
- CASE キーワードと、その後に続く 1 つの入力式。
- WHEN: 入力式と比較する値。この値が入力式と一致すると、この節は true になります。1 つの CASE 式に複数の WHEN 節を含めることができます。
- THEN: WHEN 節の条件が true の場合に返される結果。CASE 式内の WHEN 節ごとに 1 つの THEN 節を指定する必要があります。
- ELSE: 省略可。WHEN 節のどの条件も true にならなかった場合、CASE は ELSE 節の値を返します。ELSE 節が指定されていない場合は、
NULL
を返します。 - END キーワード。
CASE は、後に続く各 WHEN 節を評価し、条件が true になる最初の結果を返します。残りの WHEN 節と ELSE 結果は評価されません。すべての WHEN 条件が false または NULL である場合、CASE は ELSE 結果を返します。ELSE 節が指定されていない場合は NULL を返します。
構文
CASE input_expression
WHEN expression_to_match THEN result
[WHEN expression_to_match THEN result]
[...]
[ELSE else_result]
END
パラメータ
input_expression
評価する式。任意の有効な式を input_expression
として使用できます。
WHEN expression_to_match
WHEN 節は expression_to_match
と input_expression
を比較し、2 つが等しい場合は true、等しくない場合は false を返します。WHEN 節では、任意の有効な式を使用できます。
THEN 結果
各 WHEN 節には、対応する THEN 節が必要です。THEN 節では、条件が true である場合に返す結果を指定します。WHEN 節が複数ある場合、CASE 式は最初に true になった節の結果を返します。THEN 節では、任意の有効な式を使用できます。
注意事項
CASE 式の THEN 節で返される結果は、すべての THEN 節で同じ型でなければなりません。
たとえば、最初の THEN 節で返される値がテキストであれば、他の THEN 節でもテキストを返す必要があります。
ELSE else_result
省略可能な ELSE 節では、デフォルトの結果を指定します。WHEN 節の条件がどれも満たされなかった場合、この値が返されます。CASE 式に ELSE 節が含まれておらず、WHEN 節のどの条件も満たされなかった場合は、NULL
が返されます。1 つの CASE 式に指定できる ELSE 節は 1 つだけです。
その他の例
1 つの値を別の値に置き換えます。たとえば、コードを直感的に理解できる名前に置き換えて、データを読みやすくすることができます。
CASE Payment Type
WHEN "CC" THEN "Credit Card"
WHEN "D" THEN "Debit Card"
WHEN "GC" THEN "Gift Card"
WHEN "UNK" THEN "Unknown"
ELSE Payment Type
END