La función DECODE es una función al estilo IF/ELSE. Comprara una misma expresión con otra/s.
Sintaxis
La función tiene tres parámetros obligatorios. Los dos primeros se comparan y, si son iguales, se devuelve ‘resultado_si_igualB’; si no son iguales, se devuelve NULL.
DECODE(expresión, expresiónB, resultado_si_igualB);
Esta función puede crecer tanto como se necesite. Por ejemplo, si queremos que, en caso de que no sean iguales, devuelva un valor en concreto, usamos:
DECODE(expresión, expresiónB, resultado_si_igualB, resultado_si_no_igualB);
De igual manera se puede continuar comparando «expresión» con otros resultados en caso de no encontrar igualdades. Dividimos en varias lineas para hacer más legible la sintaxis.
DECODE(expresión, expresiónB, resultado_si_igualB, expresiónC, resultado_si_igualC, expresiónD, resultado_si_igualD, resultado_si_ninguno_igual);
Una posible lectura, dependiendo los valores de «expresiónX», podría ser: compara «expresión» con «expresiónB», si no es igual, compara «expresión» con «expresiónC», si no es igual, compara «expresión» con «expresiónD», si es igual, devuelve «resultado_si_igualD».
Ejemplos
SELECT DECODE(343,344,'Igual') from dual;
Esta consulta devuelve NULL.
SELECT DECODE(343,344,'Igual','No_Igual') from dual;
Esta devuelve: No_Igual.
SELECT DECODE('ORIGINAL','COPIA','No_es_copia','TRANSCRITO','No_es_transcrito','ORIGINAL','Es_original','No_es_conocido') from dual;
Esta consulta devuelve: Es_original.