2.1 Declaración CASO
Hay dos formas de escribir una sentencia en SQL CASE
. La primera entrada hace que parezca un cambio del lenguaje Java, mientras que el segundo formato es más como plural if-else
.
Comencemos con la primera opción: un análogo de interruptor. El formato general es:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
Realmente muy similar a switch
, solo que las palabras son ligeramente diferentes:
sql | Java |
---|---|
caso x | cambiar (x) { |
cuando el valor | valor del caso: |
entonces resultado | resultado devuelto; |
otro resultado | predeterminado: devolver resultado; |
fin | } |
Traduzcamos un ejemplo de Java a SQL:
Java | sql |
---|---|
|
|
2.2 Segunda versión de la sentencia CASE
También hay una segunda versión del operador CASE
que, como se mencionó anteriormente, es más como plural if-else
. El formato general es:
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
Aquí, las condiciones simplemente se verifican secuencialmente, si alguna de ellas es verdadera, se devolverá el resultado especificado. Si ninguna de las condiciones es verdadera, entonces el valor especificado en ELSE
.
Traduzcamos un ejemplo de Java a SQL:
Java | sql |
---|---|
|
|
|
|
|
|
2.3 Resuelve el problema usando la instrucción CASE
Anotemos alguna consulta interesante. Recuerde, teníamos una tarea: agregar la palabra "¡EXPIRADO!" al nombre de tareas pasadas en la tabla de tareas . Se puede hacer fácilmente con el CASE
.
Para el campo de fecha límite , se verá como la segunda versión de la declaración CASE
:
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
Un ejemplo de una consulta completa usando el operador CASE
:
SELECT
id,
emploee_id,
CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
deadline
FROM task
El resultado de esta consulta será:
identificación | empleado_id | nombre | fecha límite |
---|---|---|---|
1 | 1 | ¡VENCIÓ! Arreglar un error en la interfaz | 2022-06-01 |
2 | 2 | Arreglar un error en el backend | 2022-06-15 |
3 | 5 | comprar cafe | 2022-07-01 |
4 | 5 | comprar cafe | 2022-08-01 |
5 | 5 | comprar cafe | 2022-09-01 |
6 | (NULO) | limpiar la oficina | (NULO) |
7 | 4 | Disfruta la vida | (NULO) |
8 | 6 | Disfruta la vida | (NULO) |