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) |
GO TO FULL VERSION