Oracle bietet mit der Funktion decode einen Wert auf mehrere mögliche Werte zu vergleichen und bei Übereinstimmung einen speziellen Wert zurückzugeben. Dies entspricht einer verkürzten Form von der IF-THEN-ELSE Syntax.

Syntax: decode( expression , search , result [, search , result]… [, default] )

expression – Ausgangswert der mit den Werten aus search verglichen werden soll
search – Vergleichswert; bei Übereinstimmung mit expression wird result zurückgeliefert
result – Wird als Ergebnis zurückgeliefert, falls expression gleich search ist
default – Sollte keine Übereinstimmung auftreten so wird dieser Wert zurückgegeben

Beispiel:

select decode(POSTLEITZAHL, 70599, 'Stuttgart - Asemwald',
                            70499, 'Stuttgart - Bergheim',
                            'UNBEKANNT') 
  from ADRESSE;

Ohne diese Ausdruck hätte obiger Select folgendermaßen ausgesehen:

select case when POSTLEITZAHL = 70599
             then 'Stuttgart - Asemwald'
            when POSTLEITZAHL = 70499
             then 'Stuttgart - Bergheim'
            else 'UNBEKANNT' end 
  from ADRESSE;

Aus Performancesicht ist ein case-when-Block performanter als die decode-Funktion.
Die Funktion kann auch in Funktionen angewandt werden, dann ersetzt die Funktion einen IF-THEN-ELSE Block:

if POSTLEITZAHL = 70599 then
 result := 'Stuttgart - Asemwald';
elsif POSTLEITZAHL = 70499 then
 result := 'Stuttgart - Bergheim';
else
 result := 'Unbekannt';
end if;

Kommentare sind derzeit nicht möglich.

   
Impressum Suffusion theme by Sayontan Sinha