La función DECODE de Oracle

Imagen destacada para la función DECODE de Oracle en AT

La función DECODE es una función al estilo IF/ELSE: compara una misma expresión con uno o varios valores.

Es una función clásica de Oracle para resolver condiciones sencillas dentro de una consulta SQL.

Sintaxis básica

DECODE(expr, valor_busqueda, resultado [, resultado_por_defecto])

Si expr coincide con valor_busqueda, Oracle devuelve resultado. Si no coincide, devuelve resultado_por_defecto cuando se ha indicado, o NULL si no existe valor por defecto.

Ejemplo simple:

SELECT DECODE(343, 344, 'Igual', 'No igual') AS resultado
FROM dual;

Resultado:

RESULTADO
---------
No igual

Varios valores posibles

DECODE puede encadenar varias comparaciones:

SELECT DECODE(
         'ORIGINAL',
         'COPIA', 'No es copia',
         'TRANSCRITO', 'No es transcrito',
         'ORIGINAL', 'Es original',
         'No es conocido'
       ) AS resultado
FROM dual;

Resultado:

RESULTADO
----------
Es original

Ejemplo en una consulta

WITH tareas (estado) AS (
  SELECT 'P' FROM dual UNION ALL
  SELECT 'F' FROM dual UNION ALL
  SELECT 'X' FROM dual
)
SELECT estado,
       DECODE(
         estado,
         'P', 'Pendiente',
         'F', 'Finalizada',
         'Desconocido'
       ) AS descripcion
FROM tareas
ORDER BY estado;

Resultado:

ESTADO  DESCRIPCION
------  -----------
F       Finalizada
P       Pendiente
X       Desconocido

Cuándo usar DECODE

DECODE es útil para condiciones simples y código Oracle antiguo. Para condiciones más largas o más legibles, normalmente conviene usar CASE, que es más claro y estándar SQL.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *