Maybaygiare.org

Blog Network

Cómo usar COALESCE en PostgreSQL

RESUMEN: Este artículo revisa los métodos para manejar valores NULOS en PostgreSQL utilizando la función COALESCE. Los temas discutidos con ejemplos incluyen:

1. ¿Qué es una función de FUSIÓN?

un. Algunas advertencias

2. Prevención de valores NULOS con COALESCE

En este post, vamos a entender qué es la función COALESCE y cómo usarla en PostgreSQL.

¿Qué es una función de FUSIÓN?

COALESCE es una función integrada en el sistema que puede considerarse una de las expresiones condicionales disponibles en PostgreSQL. NULLIF, GREATEST, LEAST y COALESCE son los tipos de expresiones condicionales en PostgreSQL.

La función COALESCE devuelve la primera expresión no NULA de la lista especificada. Si todos los argumentos son NULL, devolverá NULL como salida.

apoyó La sintaxis es:

COALESCE(value_1,value_2,value_3,........value_n)

Los parámetros o argumentos son:

value_1,value_2,value_3,........value_n

Advertencias

Un par de puntos sobre la UNEN función:

  • Los parámetros son probados para valores no NULOS.
  • Todos los parámetros deben ser del mismo tipo de datos. De lo contrario, se producirá un error.
  • La función COALESCE acepta un número ilimitado de argumentos.
  • toma los argumentos de izquierda a derecha.
  • La función Coalesce proporciona compatibilidad similar como NVL e IFNULL que están disponibles en otros DBMS.
  • CASE y COALESCE se pueden usar para propósitos similares, pero la ventaja de usar COALESCE es que requiere mucho menos escritura.
  • Dejará de evaluar parámetros tan pronto como se alcance el primer valor no NULO.

Ejemplos

1. Así es como funciona COALESCE con un valor no NULO para el primer parámetro:

postgres=# select coalesce (1,null,2); coalesce ---------- 1(1 row)

La función COALESCE encuentra la primera expresión no NULA al principio, por lo que siempre producirá el mismo resultado independientemente de lo que contengan los parámetros restantes.

2. Así es como funciona COALESCE cuando un valor NULO es el primer parámetro:

postgres=# select coalesce (null,1,2); coalesce ---------- 1(1 row)

La función COALESCE encontró un valor NULO en el primer parámetro, por lo que continuó hasta el segundo parámetro, que no era NULO, de modo que se devolvió el valor del parámetro.

3. Así es como interpreta múltiples valores NULOS:

postgres=# SELECT coalesce(null,null, 1, 2, 3, null, 4); coalesce ---------- 1(1 row)

Hay varios valores nulos en esta expresión, pero debido a que se alcanzó el primer valor no NULO en el tercer parámetro, se ignoraron todos los valores restantes.

4. Si los tipos de datos de los parámetros no coinciden, esto producirá un error:

postgres=# SELECT coalesce(1,now(),null);ERROR: COALESCE types integer and timestamp with time zone cannot be matched

El primer parámetro es un entero, y la función now() devuelve una marca de tiempo con zona horaria. Debido a que estos parámetros no son del mismo tipo, la firma de la función no es válida, por lo que produce un error.

5. Puede usar otras funciones como parámetros dentro de la función COALESCE:

postgres=# SELECT coalesce(nvl(null,199),least(8,null),avg(9.9)); coalesce ---------- 199(1 row)

Evitar valores nulos con COALESCE

Una aplicación útil de la función COALESCE es evitar que aparezcan valores NULOS en los resultados de la consulta.

Ejemplo

1. Cree una tabla «ventas» con el comando CREAR TABLA:

postgres=# CREATE TABLE sales (serial_id int primary key, product_name varchar(50), amount numeric, discount numeric); CREATE TABLE

2. Insertar datos en la tabla «ventas»:

postgres=# INSERT INTO sales VALUES (121,'paste',1000,10), (144,'brush',1500,20), (166,'soap',800,0), (178,'coffee',500,NULL);INSERT 0 4

3. Si intentamos realizar restar un valor en la columna » descuento «de un valor en la columna» cantidad», la última fila devolverá un valor NULO. Esto se debe a que cualquier aritmética realizada en un valor NULO resultará en NULO.

postgres=# SELECT amount - discount as "final bill" FROM sales; final bill ------------ 990 1480 800 <=Null(4 rows)

Deja una respuesta

Tu dirección de correo electrónico no será publicada.