2.1 CASE-udtalelse
Der er to måder at skrive en sætning i SQL CASE. Den første post får det til at ligne et skifte fra Java-sproget, mens det andet format er mere som flertal if-else.
Lad os starte med den første mulighed - en analog af switch. Det generelle format er:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
Virkelig meget lig switch, kun ordene er lidt forskellige:
| SQL | Java |
|---|---|
| tilfælde x | switch (x) { |
| når værdi | case værdi: |
| derefter resultat | returnere resultat; |
| andet resultat | default: returner resultat; |
| ende | } |
Lad os oversætte et eksempel fra Java til SQL:
| Java | SQL |
|---|---|
|
|
2.2 Anden version af CASE-erklæringen
Der er også en anden version af operatoren CASE, der, som nævnt ovenfor, mere ligner flertal if-else. Det generelle format er:
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
Her kontrolleres betingelserne blot sekventielt, hvis nogen af dem er sande, vil det angivne resultat blive returneret. Hvis ingen af betingelserne er sande, er værdien angivet i ELSE.
Lad os oversætte et eksempel fra Java til SQL:
| Java | SQL |
|---|---|
|
|
|
|
|
|
2.3 Løs problemet ved hjælp af CASE-sætningen
Lad os skrive en interessant forespørgsel ned. Husk, vi havde en opgave - at tilføje ordet "UDLØB!" til navnet på tidligere opgaver i opgavetabellen . Det kan nemt gøres med CASE.
For deadline- feltet vil det se ud som den anden version af erklæringen CASE:
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
Et eksempel på en komplet forespørgsel, der bruger operatoren CASE:
SELECT
id,
emploee_id,
CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
deadline
FROM task
Resultatet af denne forespørgsel vil være:
| id | emploee_id | navn | deadline |
|---|---|---|---|
| 1 | 1 | UDLØB! Ret en fejl på frontend | 2022-06-01 |
| 2 | 2 | Ret en fejl på backend | 2022-06-15 |
| 3 | 5 | Køb kaffe | 2022-07-01 |
| 4 | 5 | Køb kaffe | 2022-08-01 |
| 5 | 5 | Køb kaffe | 2022-09-01 |
| 6 | (NUL) | Ryd op på kontoret | (NUL) |
| 7 | 4 | Nyd livet | (NUL) |
| 8 | 6 | Nyd livet | (NUL) |
GO TO FULL VERSION