Sintaxis
DECODE (campo, valor_a_comprobar1, valor_devuelto_si_coincide1,
valor_a_comprobar2, valor_devuelto_si_coincide2, …, valor_en_caso_contrario)

Esta función es «equivalente» a la función condicional «if» de programación.

Devuelve el segundo valor si se cumple el primero, sirve para cambiar valores (en pares). Por ejemplo, si tenemos un campo con el identificativo del país y queremos que aparezca el nombre del país haremos lo siguiente:

Select DECODE (codigopais, ‘ES’, ‘España’, ‘DE’, ‘Alemania’, ‘FR’, ‘Francia’, ‘DK’, ‘Dinamarca’, ‘UK’, ‘Reino Unido’, ‘IT’, ‘Italia’, ‘USA’, ‘Estados Unidos’, ‘CH’, ‘Chile’, codigopais)
from paises

En este caso, el SELECT mostrará el nombre del país según su código y, si no existe equivalencia, mostrará el código (por ello hemos puesto al final del DECODE ‘codigopais’.

Otro ejemplo:

SELECT exp.EXPEDIENTE, exp.PAC, DECODE(TRIM(exp.CUELGA), », ‘-1’, exp.CUELGA) CUELGA,
exp.IMPORTE_OBRA, FROM EXPEDIENTE_PAC exp
WHERE TRIM(exp.EXPEDIENTE) = ‘expediente de prueba’

En este caso, para la columna ‘Cuelga’ mostrará el valor ‘-1’ si el campo ‘exp.CUELGA’ está vacío, en caso contrario mostrará el valor del campo ‘exp.CUELGA’.