CASE (simple)
La instrucción CASE
simple devuelve un resultado en función del valor de una sola expresión de entrada o un resultado predeterminado si ninguno de los valores de comparación coincide.
Consulta también IF.
Ejemplo de uso
Sustituye los códigos de pago por nombres intuitivos:
CASE Payment Type WHEN "CC" THEN "Credit Card" WHEN "DC" THEN "Debit Card" WHEN "GC" THEN "Gift Card" WHEN "CA" THEN "Cash" ELSE "Other" END
Sintaxis
CASE input_expression WHEN expression_to_match THEN result [WHEN expression_to_match THEN result] [...] [ELSE else_result] END
Parámetros
input_expression
: puede ser cualquier campo o expresión válidos.- [
expression_to_match
: puede ser cualquier campo o expresión válidos. La cláusulaWHEN
comparainput_expression
coninput_expression
y devuelve el valor true si son iguales o false si no lo son.]{#when-conditions} result
: puede ser cualquier campo o expresión válidos. Cada cláusulaWHEN
debe corresponderse con una cláusulaTHEN
, que especifica los resultados que se devuelven si se cumple la condición. Si hay varias cláusulasWHEN
, la instrucciónCASE
devuelve el resultado de la primera cláusula que se cumple.else_result
(opcional): puede ser cualquier campo o expresión válidos. La cláusulaELSE
else_result especifica un resultado predeterminado para la instrucciónCASE
. Esta cláusula se devuelve si no se cumple ninguna cláusulaWHEN
. Si una instrucciónCASE
no tiene ninguna cláusulaELSE
y tampoco se cumple ninguna cláusulaWHEN
, la instrucciónCASE
devuelveNULL
.
Cómo funciona la expresión CASE
simple
Una instrucción CASE
simple consta de los siguientes elementos:
- La palabra clave
CASE
, seguida de una expresión de entrada. WHEN
: el valor con el que se comparainput_expression
. Si el valor es igual ainput_expression
, se cumple esta cláusula. Puedes incluir varias cláusulasWHEN
en una sola instrucciónCASE
.THEN
: el resultado que devuelve la expresión si se cumple la condición de la cláusulaWHEN
. La instrucciónCASE
debe contener una cláusulaTHEN
por cada cláusulaWHEN
.ELSE
: opcional. Si no se cumple ninguna de las condiciones de las cláusulasWHEN
,CASE
devuelve el valor de la cláusulaELSE
, oNULL
si no se ha especificado ninguna cláusulaELSE
.- La palabra clave
END
.
CASE
evalúa cada cláusula WHEN
sucesiva y devuelve el primer resultado donde se cumple la condición. Las cláusulas WHEN
restantes y el resultado ELSE
no se evalúan. Si todas las condiciones WHEN
son false o NULL
, CASE
devuelve el resultado ELSE
o, si no hay ninguna cláusula ELSE
, devuelve NULL
.
Ejemplo
Para proporcionar enlaces personalizados a tus clientes premium:
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