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.
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.
0 Comentarios