• Categoría: Oracle
  • Visto: 154634

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 
Oracle

Sintaxis.

NVL(expr1,expr2)

 

Proposito.

 

La función NVL() te permite sustituir valores null con una cadena en los resultados de una consulta. Si expr1 es nulo, NVL devuelve expr2. Si expr1 no es nulo, NVL devuelve expr1.

 

Los argumentos expr1 y expr2 pueden tener cualquier tipo de dato. Si sus tipos de datos son diferentes, entonces la base de datos Oracle convierte implícitamente al otro. Si no se puede convertir de forma implícita, la base de datos devuelve un error. La conversión implícita se lleva a cabo de la siguiente manera: 

 

Si expr1 es de tipo carácter, la base de datos Oracle convierte expr2 al tipo de datos de expr1 antes de compararlos y devuelve un VARCHAR2 en el juego de caracteres de expr1

 

Si expr1 es de tipo numérico, base de datos Oracle determina qué argumento tiene la máxima prioridad numérica, convierte implícitamente el argumento válido para ese tipo de datos, y devuelve ese tipo de datos

 

La función NVL() se puede utilizar tanto en Oracle 10g como en Oracle 11g.

 

Ejemplos

 

En este ejemplo aparece un listado de productos con su descuento, si descuento es null colocamos un 0.


SELECT Descripcion, NVL(TO_CHAR(descuento), 0) Descuento
FROM productos
WHERE precio < 12
ORDER BY 1;

DESCRIPCION              DESCUENTO
---------------------------     --------------
Cuaderno anillas 10 A4    0
Grapadora pequeña       10
Paquete 500 folios A4     0
Portaminas 0.5             2
Rotulador rojo              4


 

En este otro ejemplo si descuento es null colocamos una cadena de caracteres ‘Sin Descuento’. 


SELECT Descripcion, NVL(TO_CHAR(descuento), 'Sin Descuento') Descuento
FROM productos
WHERE precio < 12
ORDER BY 1;

DESCRIPCION             DESCUENTO
-----------------------        ---------------
Cuaderno anillas 10 A4   Sin Descuento
Grapadora pequeña      10
Paquete 500 folios A4    Sin Descuento
Portaminas 0.5            2
Rotulador rojo             4