¿Cuál es el equivalente PostgreSQL de la función NVL de Oracle?


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 que COALESCE 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 admite NVL (y aparentemente también Informix; consulte los comentarios).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *