2.1 SAKSUTTALING
Det er to måter å skrive en setning i SQL CASE
. Den første oppføringen får det til å se ut som bytte fra Java-språket, mens det andre formatet er mer som flertall if-else
.
La oss starte med det første alternativet - en analog av bryteren. Det generelle formatet er:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
Virkelig veldig lik switch
, bare ordene er litt forskjellige:
SQL | Java |
---|---|
tilfelle x | bryter (x) { |
når verdi | saksverdi: |
deretter resultat | returnere resultat; |
annet resultat | standard: returner resultat; |
slutt | } |
La oss oversette et eksempel fra Java til SQL:
Java | SQL |
---|---|
|
|
2.2 Andre versjon av CASE-uttalelsen
Det er også en andre versjon av operatoren CASE
, som, som nevnt ovenfor, er mer som flertall if-else
. Det generelle formatet er:
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
Her blir betingelsene ganske enkelt sjekket sekvensielt, hvis noen av dem er sanne, vil det angitte resultatet bli returnert. Hvis ingen av betingelsene er sanne, vil verdien spesifisert i ELSE
.
La oss oversette et eksempel fra Java til SQL:
Java | SQL |
---|---|
|
|
|
|
|
|
2.3 Løs problemet ved å bruke CASE-setningen
La oss skrive ned noen interessante spørsmål. Husk at vi hadde en oppgave - å legge til ordet "UTLØPT!" til navnet på tidligere oppgaver i oppgavetabellen . Det kan enkelt gjøres med CASE
.
For fristfeltet vil det se ut som den andre versjonen av erklæringen CASE
:
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
Et eksempel på en fullstendig spørring som bruker operatøren CASE
:
SELECT
id,
emploee_id,
CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
deadline
FROM task
Resultatet av denne spørringen vil være:
id | emploee_id | Navn | frist |
---|---|---|---|
1 | 1 | UTLØPT! Rett opp en feil på frontend | 2022-06-01 |
2 | 2 | Rett opp en feil på backend | 2022-06-15 |
3 | 5 | Kjøp kaffe | 2022-07-01 |
4 | 5 | Kjøp kaffe | 2022-08-01 |
5 | 5 | Kjøp kaffe | 2022-09-01 |
6 | (NULL) | Rydd opp på kontoret | (NULL) |
7 | 4 | Nyt livet | (NULL) |
8 | 6 | Nyt livet | (NULL) |