sql >> Base de Datos >  >> RDS >> Oracle

Cómo usar la función NVL() en Oracle

Este tutorial de Oracle SQL proporciona explicaciones, ejemplos de la función NVL en Oracle

¿Qué es la función NVL() en Oracle

La función NVL en Oracle es una función de anidamiento que se usa para sustituir valores nulos con ciertos valores

En la sintaxis anterior

expr1 :son los valores de origen o la expresión que pueden contener nulo. Puede proporcionar el nombre de la columna, la función en el nombre de la columna
expr2:es el valor objetivo que se colocará en caso de que se devuelva un valor nulo de expr1

Si expr1 es nulo, entonces NVL devuelve expr2. Si expr1 no es nulo, NVL devuelve expr1.

Puntos importantes a tener en cuenta
(1) Los argumentos expr1 y expr2 pueden tener cualquier tipo de datos. Si sus tipos de datos son diferentes, Oracle Database convierte implícitamente uno en el otro. Si no se pueden convertir implícitamente, la base de datos devuelve un error.
Si expr1 son datos de caracteres, Oracle Database convierte expr2 al tipo de datos de expr1 antes de compararlos y devuelve VARCHAR2 en el juego de caracteres de expr1.

Si expr1 es numérico, Oracle determina qué argumento tiene la precedencia numérica más alta, convierte implícitamente el otro argumento a ese tipo de datos y devuelve ese tipo de datos.

Así que la siguiente declaración tendría éxito

select nvl(num-col ,10) from <table>
select nvl(char-col ,'NA') from <table>
select nvl(end_date,'01-MAY-18') from <table>

La siguiente declaración haría una conversión implícita

select nvl(char-col ,1) from <table>

La siguiente declaración fallaría

select nvl(end_date,'m/a') from <table>
select nvl(user_id,'abc') from <table>

Cómo usar la función NVL()


Esta función es muy útil cuando no queremos devolver valores nulos o en el cálculo numérico, ya que nulo convertiría los valores enteros en nulos

Vamos tome un ejemplo para entenderlo
Tenemos una tabla sales_people que contiene las ventas realizadas por los vendedores, el porcentaje de comisión sobre las ventas, el salario de las personas. Queremos calcular los ingresos mensuales totales de los vendedores. Las ventas pueden tener valores nulos

La declaración sería

select name,(salary + sales*commission/100)  Monthy_income from sales_people;

Devolverá valores nulos de todas las personas que no hayan realizado ninguna venta en ese período, ya que el cálculo tendrá valores nulos

Esto se puede arreglar usando la función nvl como

select name,(salary + nvl(sales,0)*commission/100) Monthly_income from sales_people;

Por lo tanto, es claramente muy útil al realizar operaciones matemáticas. La función NVL en Oracle es una función bastante útil y se puede usar en muchos lugares

También lee
Funciones de fecha Oracle SQL
Función NULLIF en Oracle
Instrucción de actualización en Oracle
Función Fusionar en Oracle
Cambiar formato de fecha en Oracle
https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions105.htm