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
Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.