Mejor respuesta
La función NVL de Oracle le permite reemplazar nulo con una cadena en los resultados de una consulta. Es útil para deshacerse de valores nulos.
Aquí está la sintaxis:
NVL(exp\_to\_check, replacement\_value)
If exp\_to\_check
es nulo, entonces NLV () devuelve replacement\_value
. Si exp\_to\_check
no es nulo, entonces NLV () devuelve exp\_to\_check
.
Aunque no es una coincidencia exacta, la función COALESCE () de PostgreSQL proporciona una funcionalidad muy similar. Acepta un número ilimitado de argumentos y devuelve el primer argumento que no es nulo. Si todos los argumentos son nulos, la función COALESCE
devolverá un valor nulo. Su sintaxis es:
COALESCE (argument\_1, argument\_2, …)
Aquí hay un par de ejemplos básicos para ilustrar, utilizando mi cliente de desarrollo de base de datos Navicat para PostgreSQL :
Uso de COALESCE () en una consulta real
Aquí hay un ejemplo más realista usando la base de datos de muestra de Sakila:
La tabla de direcciones contiene una dirección y un campo address2. Este último puede ser nulo. Podemos reemplazarlos con un valor de «N / A» usando la función COALESCE ().
Me gusta que el Navicat Query Editor pueda mostrarme e incluso insertar la sintaxis correcta en mis consultas.
Aquí está la consulta completa y los resultados:
Puede ver que los valores nulos de la dirección2 se han convertido.
¡Saludos cordiales!
Adam
Respuesta
COALESCE
Seguro, NVL
es un nombre más corto, pero ¿sabes qué?
- Nadie entiende lo que
NVL
significa. Es difícil de explicar a los novatos. -
NVL
solo toma 2 argumentos, mientras queCOALESCE
toma un número arbitrario . -
COALESCE
es parte del estándar ANSI SQL. Todas las bases de datos SQL lo admiten, incluido Oracle. Solo Oracle admiteNVL
(y aparentemente también Informix; consulte los comentarios).