CASEAusdruck1WHENAusdruck2THENAusdruck3, ...
[ ELSEAusdruck4 ]
END
SELECT id,
( CASE name
WHEN 'Tee Shirt' THEN 'Shirt'
WHEN 'Sweatshirt' THEN 'Shirt'
WHEN 'Baseball Cap' THEN 'Hat'
ELSE 'Unknown'
END ) as Type
FROM Product;
Aus Kompatibilitätsgründen können Sie diesen Ausdruck entweder mit ENDCASE oder mit END CASE abschließen.
Sie können CASE-Ausdrücke überall dort verwenden, wo reguläre Ausdrücke zulässig sind.
Syntax 1
Falls der Ausdruck, der dem Schlüsselwort CASE folgt, gleich dem Ausdruck ist, der dem ersten Schlüsselwort WHEN folgt,
wird der Ausdruck zurückgegeben, der dem Schlüsselwort WHEN folgt. Andernfalls wird der Ausdruck zurückgegeben, der dem Schlüsselwort
ELSE folgt, sofern angegeben.
Der folgende Code verwendet zum Beispiel eine CASE-Anweisung als zweite Klausel in einer SELECT-Anweisung. Er wählt eine Zeile
aus der Tabelle Product aus, in der der Spaltenname den Wert Sweatshirt hat.
Syntax 2
Wenn die Suchbedingung, die dem ersten Schlüsselwort WHEN folgt, den Wert TRUE hat, wird der Ausdruck, der dem zugeordneten
Schlüsselwort THEN folgt, zurückgegeben. Andernfalls wird der Ausdruck zurückgegeben, der der ELSE-Klausel folgt, sofern angegeben.
NULLIF-Funktion für abgekürzte CASE-Ausdrücke
Die NULLIF-Funktion ermöglicht es, einige CASE-Anweisungen in Kurzform zu schreiben. Dies ist die Syntax für NULLIF:
NULLIF ( Ausdruck_1, Ausdruck_2 )
NULLIF vergleicht die Werte der zwei Ausdrücke. Wenn der erste Ausdruck gleich dem zweiten Ausdruck ist, gibt NULLIF den Wert
NULL zurück. Wenn der erste Ausdruck nicht gleich dem zweiten Ausdruck ist, gibt NULLIF den ersten Ausdruck zurück.
Die folgende Anweisung verwendet einen CASE-Ausdruck als dritte Klausel einer SELECT-Anweisung, um eine Zeichenfolge einer
Suchbedingung zuzuordnen. Wenn der Wert der Namensspalte Tee Shirt ist, gibt diese Abfrage Sale zurück. Und wenn der Wert der Namensspalte nicht Tee Shirt und die Menge größer als fünfzig ist, wird Big Sale zurückgegeben. Ansonsten gibt die Abfrage stets Regular price zurück.
SELECT id, name,
( CASE
WHEN name='Tee Shirt' THEN 'Sale'
WHEN quantity >= 50 THEN 'Big Sale'
ELSE 'Regular price'
END ) as Type
FROM Product;