Ein CASE-Ausdruck mit Suchbedingung hat folgende Syntax:
case_ausdruck ::=
CASE
WHEN
suchbedingung THEN {
ausdruck | NULL }
...
[ELSE {
ausdruck | NULL }]
END
suchbedingung
Suchbedingung, deren Auswertung einen Wahrheitswert ergibt.
ausdruck
Ausdruck, dessen Auswertung einen alphanumerischen Wert, einen National-Wert, einen numerischen Wert oder einen Zeitwert ergibt. Es darf kein multipler Wert mit Dimension > 1 sein.
ausdruck muss in der THEN-Klausel oder in der ELSE-Klausel oder in beiden Klauseln enthalten sein.
Die Datentypen der Werte von ausdruck in den THEN-Klauseln und in der ELSE-Klausel müssen verträglich sein (siehe Abschnitt „Verträglichkeit von Datentypen").
Ergebnis
Das Ergebnis des CASE-Ausdrucks ist der Inhalt derjenigen THEN-Klausel, deren zugehörigee suchbedingung als Erste den Wahrheitswert wahr ergibt. Der Inhalt der THEN-Klausel ist der Wert des der THEN-Klausel zugeordneten ausdruck bzw. der NULL-Wert. Die WHEN-Klauseln werden von links nach rechts abgearbeitet.
Ergibt keine suchbedingung den Wahrheitswert wahr, so ist das Ergebnis der Inhalt der ELSE-Klausel, also der Wert des der ELSE-Klausel zugeordneten ausdruck bzw. der NULL-Wert. Wenn Sie die ELSE-Klausel nicht angeben, gilt die Voreinstellung NULL.
Der Datentyp eines CASE-Ausdrucks mit Suchbedingung ergibt sich aus den Datentypen der Werte von ausdruck, die in den THEN-Klauseln und der ELSE-Klausel enthalten sind, wie folgt:
Jeder ausdruck hat Datentyp CHAR bzw. NCHAR:Der Wert des CASE-Ausdrucks hat Datentyp CHAR bzw. NCHAR mit der größten Länge..
Mindestens ein Wert von ausdruck hat Datentyp VARCHAR bzw. NVARCHAR:Der Wert des CASE-Ausdrucks hat Datentyp VARCHAR bzw. NVARCHAR mit der größten bzw. größten maximalen Länge.
Jeder ausdruck hat ganzzahligen Typ oder Festpunktzahl-Typ (INT, SMALLINT, NUMERIC, DEC):Der Wert des CASE-Ausdrucks hat Datentyp Ganz- oder Festpunktzahl.
Die Nachkommastellenzahl ist die größte der Nachkommastellenzahlen der verschiedenen Werte von ausdruck.
Die Gesamtstellenzahl ist die größte der Vorkommastellenzahlen plus die größte der Nachkommastellenzahlen der verschiedenen Werte von ausdruck, höchstens jedoch 31.
Mindestens ein Wert von ausdruck hat Gleitpunktzahl-Typ (REAL, DOUBLE PRECISION, FLOAT), die anderen haben einen beliebigen numerischen Datentyp:Der Wert des CASE-Ausdrucks hat den Datentyp DOUBLE PRECISION.
Jeder ausdruck hat Zeitdatentyp: Alle Werte müssen denselben Zeitdatentyp haben und der Wert des CASE-Ausdrucks hat auch diesen Datentyp.
Beispiel
In einer Liste werden die Artikel aus der Tabelle ARTIKEL danach sortiert, wie dringend sie bestellt werden müssen.
SELECT artnr, artbez, CASE WHEN bestand > minbestand THEN 'O.K.' WHEN bestand = minbestand THEN 'bald bestellen' WHEN bestand > minbestand * 0.5 THEN 'bestellen' ELSE 'dringend bestellen' END FROM artikel