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