Ticker

6/recent/ticker-posts

Función Decode - ORACLE

Función DECODE():
Esta función hace aveces de la sentencia CASE o IF-THEN-ELSE, para facilitar consultas condicionales. Basicamente se encarga de descifra una expresión después de compararla con cada valor de búsqueda. Considerando si la expresión es la misma que la búsqueda, se devuelve el resultado. Si se omite el valor por defecto, se devolverá un valor nulo donde una búsqueda no coincida con ninguno de los valores resultantes

Sintaxis.

DECODE(campo,valor_comprobar1,valor_devuelto_si_coincide1,valor_comprobar2,valor_devuelto_si_coincide2, ..., valor_caso_contrario_por_defecto)

Ejemplo - Caso:

Necesitamos mostrar el last_name, salary, commission_pct + salary, especificar en texto si comiciona o no, y mostrar la descripción de los departamentos solicitados 10, 20, 60, 70 y 100 entre el rango del 10 al 100, considerando que los departamentos que no se solicitan y se encuentra en dicho rango se debe especificar como - Depart. no especificado.
--Considere los comentarios
select last_name,
      salary,
      (salary * nvl(commission_pct,0))+salary add_commi_salary,
      case 
          when nvl(commission_pct,0) = 0 then 'No comisiona' else 'comisiona' end text_commi_salary,
      decode(department_id,--campo que condiciona
                           --Las busquedas de los valores resultantes que se necesita encontrar
                           10,'Administration',--si la condición es 10 = Administration,la misma función se considera con 20,60,70 y 100
                           20,'Marketing', 
                           60,'IT', 
                           70,'Public Relations',
                           100,'Finance',
                                'Depart. no especificado'--en caso no se cunpliera ninguna de las condiciones se mostrará - Depart. no especificado
                                ) as department
from  employees
where department_id between 10 and 100
order by salary;

--Si se omite el valor por defecto nos mostrara como nulos (campo - department)
select last_name,
      salary,
      (salary * nvl(commission_pct,0))+salary add_commi_salary,
      case 
          when nvl(commission_pct,0) = 0 then 'No comisiona' else 'comisiona' end text_commi_salary,
      decode(department_id,--campo que condiciona
                           --Las busquedas de los valores resultantes que se necesita encontrar
                           10,'Administration',--si la condición es 10 = Administration,la misma función se considera con 20,60,70 y 100
                           20,'Marketing', 
                           60,'IT', 
                           70,'Public Relations',
                           100,'Finance'
                                ) as department
from  employees
where department_id between 10 and 100
order by salary;
La base de datos para ejecutar los ejemplos es de RRHH oracle express.

Publicar un comentario

0 Comentarios