NVL y NVL2 son funciones SQL que a menudo se requieren en sentencias SQL, procedimientos SQL o funciones SQL. Esta publicación describe la diferencia entre NVL y NVL2. Con NVL, solo se comprueba la primera expresión. Si no es igual a NULL, se envía el campo. Sin embargo, si se produce un valor NULL aquí, se ejecuta o se envía la segunda expresión.
Sin embargo, con NVL2, no es necesario que expr1 se emita. Aquí puede definir qué valor o qué campo se genera.
NVL2 es funcionalmente idéntico a NVL si se aplica lo siguiente:
Algunas de las funciones son necesarias para las consultas. Si, por ejemplo, se realiza una consulta IF, puede ocurrir un error sin definir valores NULL. Por ejemplo, con cálculos agregados. ¿Cuál es el resultado de la suma NULL + NULL o undefined + undefined?
NVL en combinación con MAX y MIN
NVL, en combinación con MAX o MIN, también es muy útil para no devolver ninguna fila. Si, por ejemplo, el código tiene un DONDE 1 = 2 integrado, no se devuelven líneas (ni siquiera un valor NULO). Para generar un valor NULO, puede ayudarse con la función MAX o MIN. Esto siempre entrega una línea, incluso si solo tiene un valor NULL. En combinación con una NVL, finalmente puede verificar si hay «líneas de entrega» o «no entrega líneas».
SELECT NVL(MAX(1), 2)
FROM DUAL
WHERE 1=2;
En este caso, el ejemplo anterior devolvería el valor 2. No se devuelven líneas debido a la condición. Sin embargo, MAX (1) no devuelve un valor NULL para ninguna fila. Este valor NULO es interceptado por el NVL y convertido en el número 2.