NVL2 provee de funcionalidad similar a la función NVL pero con un enfoque diferente.
Esta función evalúa una columna o expresión de manera que:
- Si el resultado no es NULL, devuelve el segundo parámetro de NVL2.
- Si el resultado es NULL, devuelve el tercer parámetro de NVL2.
Como vemos, la principal diferencia con NVL es que en caso de no ser NULL, NVL2 no devuelve el dato original, sino que devuelve el segundo parámetro que le indicamos.
Sintaxis
NVL2(expresion , resultado_si_no_NULL , resultado_si_NULL)
Los tipos de datos de la expresión o columna evaluada tienen que ser compatibles con los datos del segundo y tercer parámetro.
Ejemplo
select nombre, apellidos, NVL2(deportefavorito, 'Tiene deporte favorito: SI','Tiene deporte favorito: NO') from usuarios;
En este caso estamos haciendo una consulta donde nos interesa sacar un reporte de los usuarios que muestre el nombre, apellido y si tienen o no algún deporte favorito.
No nos interesa saber qué deporte favorito en concreto tiene cada usuario, únicamente si tiene o no.