Zu Oracle

Bereich:
Versionsinfo:
SQL
getestet mit 10.2 und 11.1
Erstellung:
Letzte Überarbeitung:
03/2004 HA
05/2009 RM
 Als PDF Downloaden!

DECODE-Funktion

Entsprechend der IF-THEN-ELSE Logik ermöglicht die DECODE-Funktion bedingte Abfragen einer Tabelle. Ein Ausdruck (expression) wird decodiert, nachdem er mit jedem Suchwert (search) verglichen worden ist. Falls eine Übereinstimmung zwischen Ausdruck und Suchwert vorliegt, wird das Ergebnis (result) zurückgegeben.  Bei keiner Übereinstimmung kann ein Standardwert (default) angegeben werden.  Ohne Angabe eines Standardwertes wird ein Nullwert zurückgegeben.

Syntax:

SELECT column,...,
DECODE (column/expression, search1, result1
[, search2, result2,...,]
[,default] )
FROM table;

Beispiel:

Die Mitarbeiter sollen abhängig von ihren Abteilungen eine Gehaltserhöhung erhalten. Die Abteilung 10 erhält 5%, die Abteilung 20 bekommt 15% und alle anderen Abteilungen (hier nur 30) erhalten keine Gehaltserhöhung.

SELECT ename, deptno, sal,
DECODE(deptno,
10, sal*1.05, /* falls deptno=10 dann sal*1.05 */
20, sal*1.15, /* falls deptno=20 dann sal*1.15 */
sal) Gehaltserhöhung /* ansonsten normales sal */
FROM emp;

ENAME      DEPTNO      SAL         GEHALTSERHÖHUNG
---------- ----------  ----------  ---------------
SMITH      20          800         920
ALLEN      30          1600        1600
WARD       30          1250        1250
JONES      20          2975        3421,25
MARTIN     30          1250        1250
BLAKE      30          2850        2850
CLARK      10          2450        2572,5
SCOTT      20          3000        3450
KING       10          5000        5250
TURNER     30          1500        1500
ADAMS      20          110         1265
JAMES      30          950         950
FORD       20          3000        3450
MILLER     10          1300        1365

Suche

Kontakt

Telefon:
  089 6228 6789-0

Telefon (noch gültig):
  089 679090-40

E-Mail Verteiler Monatstipps

Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.