2.1 Dichiarazione CASE
Ci sono due modi per scrivere un'istruzione in SQL CASE
. La prima voce lo fa sembrare un passaggio dal linguaggio Java, mentre il secondo formato è più simile al plurale if-else
.
Cominciamo con la prima opzione: un analogo di switch. Il formato generale è:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
Davvero molto simile a switch
, solo le parole sono leggermente diverse:
SQL | Giava |
---|---|
caso x | cambia (x) { |
quando valore | valore del caso: |
quindi risultato | risultato di ritorno; |
altro risultato | default: restituisce il risultato; |
FINE | } |
Traduciamo un esempio da Java in SQL:
Giava | SQL |
---|---|
|
|
2.2 Seconda versione dell'istruzione CASE
Esiste anche una seconda versione dell'operatore CASE
, che, come accennato in precedenza, è più simile al plurale if-else
. Il formato generale è:
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
Qui, le condizioni vengono semplicemente verificate in sequenza, se una di esse è vera, verrà restituito il risultato specificato. Se nessuna delle condizioni è vera, il valore specificato in ELSE
.
Traduciamo un esempio da Java in SQL:
Giava | SQL |
---|---|
|
|
|
|
|
|
2.3 Risolvere il problema utilizzando l'istruzione CASE
Scriviamo qualche domanda interessante. Ricorda, avevamo un compito: aggiungere la parola "SCADUTO!" al nome delle attività passate nella tabella delle attività . Può essere fatto facilmente con il CASE
.
Per il campo scadenza , sembrerà la seconda versione della dichiarazione CASE
:
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
Un esempio di una query completa utilizzando l'operatore CASE
:
SELECT
id,
emploee_id,
CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
deadline
FROM task
Il risultato di questa query sarà:
id | impiegato_id | nome | scadenza |
---|---|---|---|
1 | 1 | SCADUTO! Risolto un bug sul frontend | 2022-06-01 |
2 | 2 | Risolto un bug sul backend | 2022-06-15 |
3 | 5 | Compra il caffè | 2022-07-01 |
4 | 5 | Compra il caffè | 2022-08-01 |
5 | 5 | Compra il caffè | 2022-09-01 |
6 | (NULLO) | Pulisci l'ufficio | (NULLO) |
7 | 4 | Goditi la vita | (NULLO) |
8 | 6 | Goditi la vita | (NULLO) |