2.1 CASE-Anweisung
Es gibt zwei Möglichkeiten, eine Anweisung in SQL zu schreiben CASE. Der erste Eintrag lässt es wie einen Wechsel von der Java-Sprache aussehen, während das zweite Format eher einem Plural ähnelt if-else.
Beginnen wir mit der ersten Option – einem Analogon von switch. Das allgemeine Format ist:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
Wirklich sehr ähnlich zu switch, nur die Wörter sind etwas anders:
| SQL | Java |
|---|---|
| Fall x | Schalter (x) { |
| wenn Wert | Fallwert: |
| dann Ergebnis | Ergebnis zurückgeben; |
| sonst Ergebnis | Standard: Ergebnis zurückgeben; |
| Ende | } |
Lassen Sie uns ein Beispiel von Java in SQL übersetzen:
| Java | SQL |
|---|---|
|
|
2.2 Zweite Version der CASE-Anweisung
Es gibt auch eine zweite Version des Operators CASE, die, wie oben erwähnt, eher dem Plural ähnelt if-else. Das allgemeine Format ist:
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
Hier werden die Bedingungen einfach nacheinander überprüft. Wenn eine davon wahr ist, wird das angegebene Ergebnis zurückgegeben. Wenn keine der Bedingungen zutrifft, wird der in angegebene Wert verwendet ELSE.
Lassen Sie uns ein Beispiel von Java in SQL übersetzen:
| Java | SQL |
|---|---|
|
|
|
|
|
|
2.3 Lösen Sie das Problem mit der CASE-Anweisung
Schreiben wir eine interessante Frage auf. Denken Sie daran, wir hatten die Aufgabe, das Wort „ABGELAUFEN!“ hinzuzufügen. zum Namen vergangener Aufgaben in der Aufgabentabelle . Das geht ganz einfach mit dem CASE.
Für das Deadline- Feld sieht es wie in der zweiten Version der Anweisung aus CASE:
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
Ein Beispiel für eine vollständige Abfrage mit dem Operator CASE:
SELECT
id,
emploee_id,
CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
deadline
FROM task
Das Ergebnis dieser Abfrage wird sein:
| Ausweis | emploee_id | Name | Termin |
|---|---|---|---|
| 1 | 1 | ABGELAUFEN! Beheben Sie einen Fehler im Frontend | 01.06.2022 |
| 2 | 2 | Beheben Sie einen Fehler im Backend | 15.06.2022 |
| 3 | 5 | Kaffee kaufen | 01.07.2022 |
| 4 | 5 | Kaffee kaufen | 01.08.2022 |
| 5 | 5 | Kaffee kaufen | 01.09.2022 |
| 6 | (NULL) | Räumen Sie das Büro auf | (NULL) |
| 7 | 4 | Das Leben genießen | (NULL) |
| 8 | 6 | Das Leben genießen | (NULL) |
GO TO FULL VERSION