CASE-Funktion

CASE ist eine komplexe Funktion, für die es zwei Formen gibt: die einfache WHEN-Form und die WHEN-Suchform. In beiden Formen gibt CASE einen Wert zurück, dessen Ergebnis den Pfad der nachfolgenden Verarbeitung steuert.

SYNTAX

Beide Formen von CASE geben einen Wert zurück, der von Regeln abhängt, die in WHEN-Klauseln definiert werden.

In der einfachen WHEN-Form wird Quellenwert mit jedem Testwert verglichen, bis eine Übereinstimmung gefunden wird. Das Ergebnis der CASE-Funktion ist der Wert des entsprechenden Ergebniswerts. Der Datentyp von Quellenwert muss deshalb mit dem Datentyp der einzelnen Testwerte vergleichbar sein.

In der CASE-Funktion muss mindestens ein WHEN-Ausdruck angegeben werden. Der ELSE-Ausdruck ist optional. Der ELSE-Standardausdruck ist NULL. Ein CASE-Ausdruck wird durch END begrenzt. Bei den Testwerten muss es sich nicht um Literalwerte handeln.

Die WHEN-Suchklausel ist der einfachen Form ähnlich, sie ist jedoch flexibler, da mehrere verschiedene Werte gestestet werden können.

Im folgenden Beispiel ist eine CASE-Funktion mit einer einfachen WHEN-Klausel dargestellt. In diesem Beispiel kann CASE nur durch eine Variable bestimmt werden, die nach dem Schlüsselwort CASE angegeben wird.
 DECLARE CurrentMonth CHAR;
  DECLARE MonthText CHAR;
  SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2);

  SET MonthText = 
   CASE CurrentMonth
      WHEN '01' THEN 'January' 
      WHEN '02' THEN 'February'
      WHEN '03' THEN 'March' 
      WHEN '04' THEN 'April' 
      WHEN '05' THEN 'May' 
      WHEN '06' THEN 'June' 
      ELSE 'Second half of year' 
   END
Im folgenden Beispiel ist eine CASE-Funktion mit einer WHEN-Suchklausel dargestellt. Dieses Beispiel wird ebenfalls durch eine Variable bestimmt, 'CurrentMonth':
 DECLARE CurrentMonth CHAR;
  DECLARE MonthText CHAR;
  SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2);

  SET MonthText = 
   CASE                
      WHEN Month = '01' THEN 'January' 
      WHEN Month = '02' THEN 'February'
      WHEN Month = '03' THEN 'March' 
      WHEN Month = '04' THEN 'April' 
      WHEN Month = '05' THEN 'May' 
      WHEN Month = '06' THEN 'June' 
      ELSE 'Second half of year' 
   END
In einer WHEN-Klausel mit Suchbedingung können in den WHEN-Klauseln unterschiedliche Variablen verwendet werden, um das Ergebnis zu ermitteln. Dies wird im folgenden Beispiel für eine WHEN-Klausel mit Suchbedingung veranschaulicht:
 DECLARE CurrentMonth CHAR;
  DECLARE CurrentYear CHAR;
  DECLARE MonthText CHAR;
  SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2);
  SET CurrentYear = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 1 FOR 4);

  SET MonthText = 
    CASE                
      WHEN CurrentMonth = '01' THEN 'January'
      WHEN CurrentMonth = '02' THEN 'February'
      WHEN CurrentMonth = '03' THEN 'March'
      WHEN CurrentYear = '2000' THEN 'A month in the Year 2000'
      WHEN CurrentYear = '2001' THEN 'A month in the Year 2001'
      ELSE 'Not first three months of any year or a month in the Year 2000 or 2001'
    END;
Zugehörige Konzepte
Übersicht zu ESQL
Zugehörige Tasks
ESQL erstellen
Zugehörige Verweise
Syntaxdiagramme: verfügbare Typen
Komplexe ESQL-Funktionen
MOVE-Anweisung
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ak05600_