Wie die SQL-CASE-Ausdruck mit Werten zu verwenden

Sie können eine kompaktere Form der SQL verwenden FALL Ausdruck, wenn Sie einen Testwert für die Gleichstellung mit einer Reihe von anderen Werten sind zu vergleichen. Diese Form ist nützlich, innerhalb eines WÄHLEN oder AKTUALISIEREN Anweisung, wenn eine Tabelle, die eine begrenzte Anzahl von Werten in einer Spalte enthält, und Sie wollen einen entsprechenden Ergebniswert auf jede dieser Spaltenwerte zuzuordnen.

Wenn du benutzt FALL Auf diese Weise hat der Ausdruck die folgende Syntax:

FALL Test_WertWENN DANN Wert1 result1WHEN Wert2 THEN result2 ..., wenn der Wertn DANN führennELSE ErgebnisxENDE

Wenn der Testwert (test_value) entspricht Wert1, dann erfolgt der Ausdruck auf den Wert result1. Ob tests_value nicht gleich Wert1 aber gleich Wert2, dann erfolgt der Ausdruck auf den Wert result2. Der Ausdruck versucht, jeden Vergleichswert wiederum den ganzen Weg hinunter zu wertn, bis es erreicht eine Übereinstimmung.

Wenn keines der Vergleichswerte der Testwert gleich ist, dann nimmt der Ausdruck auf den Wert resultx. Noch einmal, wenn das optionale SONST Klausel nicht vorhanden ist und keines der Vergleichswerte entsprechen der Testwert, der Ausdruck einen Nullwert erhält.

Um zu verstehen, wie sich der Wert Form arbeitet, wird ein Fall betrachtet, in dem Sie eine Tabelle mit den Namen und die Reihen der verschiedenen Militärs enthält. Sie wollen die Namen für jeden Rang durch die richtige Abkürzung voran aufzulisten. Die folgende Anweisung macht den Job:

SELECT CASE RANKWHEN 'general' THEN 'Gen.'WHEN' Oberst 'THEN' Col.'WHEN "Oberstleutnant", dann "Lt. Col.'WHEN 'major'THEN' Maj.'WHEN 'Kapitän' THEN 'Capt.'WHEN "Oberleutnant", dann "1st. Lt.'WHEN "Leutnant", dann "2.. Lt.'ELSE NULLEND, LAST_NAMEFROM FÜHRUNGSKRÄFTE -

Das Ergebnis ist eine Liste ähnlich wie im folgenden Beispiel:

Capt. MidnightCol. SandersGen. WashingtonMaj. DisasterNimitz

Chester Nimitz war ein Admiral der US-Marine im Zweiten Weltkrieg. Weil sein Rang ist nicht in aufgeführt FALL Ausdruck, die SONST Klausel nicht geben ihm einen Titel.

Für ein weiteres Beispiel an, dass Kapitän Midnight eine Beförderung zum Major bekommt und Sie wollen demnach die OFFICERS Datenbank zu aktualisieren. Es sei angenommen, dass die Variable officer_last_name enthält den Wert 'Mitternacht' und daß die Variable new_rank enthält eine Ganzzahl (4), Das entspricht neuen Rang des zu Mitternacht, nach der folgenden Tabelle.

New_RankRang
1General
2Oberst
3Oberstleutnant
4Haupt
5Kapitän
6Oberleutnant
7Zweiter Leutnant
8NULL

Sie können die Förderung aufnehmen, indem Sie den folgenden SQL-Code verwendet:

UPDATE OFFICERSSET RANK = CASE: new_rankWHEN 1 THEN 'general'WHEN 2 THEN' colonel'WHEN 3 THEN 'Leutnant colonel'WHEN 4 THEN' major'WHEN 5 THEN 'captain'WHEN 6 THEN' erste lieutenant'WHEN 7 THEN 'Leutnant 'WENN DANN 8 NULLENDWHERE LAST_NAME =: officer_last_name -

Eine alternative Syntax für die FALL Ausdruck mit Werten ist:

CASEWHEN test_value = Value1 DANN result1WHEN test_value = Wert2 THEN result2 ... WENN test_value = Wertn DANN führennELSE ErgebnisxENDE

Menü