Funktion CASE

CASE ist eine komplexe Funktion mit zwei Formaten: dem einfachen WHEN-Format und dem WHEN-Format mit Suchbedingung. In beiden Fällen gibt CASE einen Wert zurück, durch den der Pfad für die weitere Verarbeitung gesteuert wird.

SYNTAX

Beide Formate von CASE geben einen Wert abhängig von einer Gruppe von Regeln zurück, die in WHEN-Klauseln definiert werden.

Im einfachen WHEN-Format wird der Ausgangswert mit jedem Testwert verglichen, bis eine Übereinstimmung gefunden wird. Das Ergebnis der Funktion CASE ist der Wert des entsprechenden Ergebniswertes. Aus diesem Grund muss der Datentyp von Ausgangswert mit dem Datentyp jedes Testwertes vergleichbar sein.

Die Funktion CASE muss mindestens eine WHEN-Klausel enthalten. Die ELSE-Klausel ist optional. Der Standardausdruck der ELSE-Klausel ist NULL. Ein CASE-Ausdruck wird durch END abgeschlossen. Bei den Testwerten muss es sich nicht um Literalwerte handeln.

Die WHEN-Klausel mit Suchbedingung funktioniert entsprechend, bietet jedoch die zusätzliche Flexibilität, dass mehrere unterschiedliche Werte getestet werden können.

Das folgende Beispiel zeigt eine CASE-Funktion mit einer einfachen WHEN-Klausel. In diesem Beispiel kann das CASE-Ergebnis nur durch eine einzige Variable, die neben dem Schlüsselwort CASE angegeben wird, ermittelt werden.
 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
Das folgende Beispiel zeigt eine CASE-Funktion mit einer WHEN-Klausel mit Suchbedingung. Auch in diesem Beispiel ist eine einzige Variable, CurrentMonth, entscheidend:
 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
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2005 Letzte Aktualisierung: Nov 17, 2005
ak05600_