CASE-Ausdrücke

MitCASE-Ausdrücken können Sie die IF ... THEN ... ELSE-Logik in Ausdrücken benutzen.

In einem einfachen Case-Ausdruck sucht CASE nach dem ersten WHEN ... THEN-Paar, bei dem expr gleich comparison_expr ist, und gibt dann return_expr zurück. Wenn keines der WHEN ... THEN-Paare diese Bedingung erfüllen und eine ELSE-Klausel vorhanden ist, gibt CASE else_expr zurück. Sonst gibt CASE Null zurück.

In einem durchsuchten CASE-Ausdruck sucht CASE von links nach rechts, bis ein Vorkommen von condition gefunden wird, das true ist, und gibt dann return_expr zurück. Wenn keine condition als true ermittelt wird und eine ELSE-Klausel vorhanden ist, gibt CASE else_expr zurück. Sonst gibt CASE Null zurück.

Rückgabewert

Identisch mit dem else_expression-Argument

Syntax

CASE { simple_case_expression
     | searched_case_expression
     }
     [ ELSE else_expression ]
     END

simple_case_expression::=
     expr WHEN comparison_expr
          THEN return_expr
          [ WHEN comparison_expr
            THEN return_expr ]...

searched_case_expression::=
     WHEN condition THEN return_expr
     [ WHEN condition THEN return_expr ]...

Argumente

expr ist der Basisausdruck, der getestet wird.

comparison_expr ist der Ausdruck, für den expr getestet wird. Er muss denselben Basisdatentyp (numerisch oder Text) haben wie expr.

Bedingung ist ein bedingter Ausdruck.

return_expr ist der zurückgegebene Wert, wenn eine Übereinstimmung gefunden wurde oder die Bedingung wahr ist.

Beispiel

Die folgende Anweisung gibt Low, Medium, oder High je nach Wert von credit_limit zurück:

CASE credit_limit WHEN 100 THEN 'Low'
   WHEN 5000 THEN 'High'
   ELSE 'Medium'

Die nächste Anweisung gibt das tatsächliche Gehalt zurück, wenn es größer als oder gleich 2000 ist, oder 2000, wenn es kleiner ist als 2000.

CASE WHEN salary > 2000 THEN salary
   ELSE 2000 END