CASE
Construcción SQL
Comprueba las ramas WHEN por orden y devuelve el resultado de la primera que se cumple.
PostgreSQL 17.9
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 WHENOpcional
- condition
- Condición de la rama o, si se indica expression, el valor con el que se comparaboolean
- result
- Valor que devuelve la rama si se cumple su condición
- ELSE result
- Valor si no se cumple ninguna ramaOpcional
Valor devuelto
Resultado de la primera rama que se cumple; NULL si no se cumple ninguna y no hay ELSE
Ejemplos
Comparar dos números
PostgreSQL 17.9
SELECT CASE
WHEN 10 > 5 THEN 'greater'
ELSE 'less or equal'
END AS result;Papel en la familia según el estado
PostgreSQL 17.9
SELECT member_name,
CASE
WHEN status IN ('father', 'mother') THEN 'parent'
ELSE 'child'
END AS role
FROM FamilyMembers;Forma simple sin ELSE
PostgreSQL 17.9
SELECT member_name,
CASE
status
WHEN 'father' THEN 'dad'
WHEN 'mother' THEN 'mom'
END AS parent_role
FROM FamilyMembers;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 NULL, usa la forma sin expression y la condición WHEN expression IS NULL.