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) |