Referencia de funciones

CASE

Construcción SQL

Comprueba las ramas WHEN por orden y devuelve el resultado de la primera que se cumple.

MySQL 8.4
CASE [expression] WHEN condition THEN result [WHEN ...] [ELSE result] END
  • [ ]parte opcional
  • ...se puede repetir
expression
Expresión que se compara con los valores de las ramas WHEN
Opcional
condition
Condición de la rama o, si se indica expression, el valor con el que se compara
BOOLEAN
result
Valor que devuelve la rama si se cumple su condición
ELSE result
Valor si no se cumple ninguna rama
Opcional

Valor devuelto

Resultado de la primera rama que se cumple; NULL si no se cumple ninguna y no hay ELSE

Ejemplos

Comparación de dos números

MySQL 8.4
SELECT CASE
		WHEN 10 > 5 THEN 'greater'
		ELSE 'less or equal'
	END AS result;
result
greater

Papel en la familia según el estado

MySQL 8.4
SELECT member_name,
	CASE
		WHEN status IN ('father', 'mother') THEN 'parent'
		ELSE 'child'
	END AS role
FROM FamilyMembers;
member_namerole
Headley Quinceyparent
Flavia Quinceyparent
Andie Quinceychild
Lela Quinceychild
Annie Quinceychild
Ernest Forrestparent
Constance Forrestparent
Wednesday Addamschild

Forma simple sin ELSE

MySQL 8.4
SELECT member_name,
	CASE
		status
		WHEN 'father' THEN 'dad'
		WHEN 'mother' THEN 'mom'
	END AS parent_role
FROM FamilyMembers;
member_nameparent_role
Headley Quinceydad
Flavia Quinceymom
Andie Quincey<NULL>
Lela Quincey<NULL>
Annie Quincey<NULL>
Ernest Forrestdad
Constance Forrestmom
Wednesday Addams<NULL>

Detalles

CASE tiene dos formas. Sin expression, cada WHEN tiene su propia condición. Con expression, esta se compara mediante = con el valor de cada rama, por eso una rama WHEN NULL nunca se cumple: para comprobar si hay NULL, usa la forma sin expression y la condición WHEN expression IS NULL.

Véase también

Dónde aprenderlo