PostgreSQL – COALESCE

En PostgreSQL , la función COALESCE devuelve el primer argumento no nulo. Generalmente se usa con la declaración SELECT para manejar valores nulos de manera efectiva.

Syntax: COALESCE (argument_1, argument_2, …);

La función COALESCE acepta un número ilimitado de argumentos. Devuelve el primer argumento que no es nulo. Si todos los argumentos son nulos, la función COALESCE devolverá un valor nulo. La función COALESCE evalúa los argumentos de izquierda a derecha hasta que encuentra el primer argumento no nulo. Todos los argumentos restantes del primer argumento no nulo no se evalúan.

Ejemplo:
Para fines de demostración, primero creemos una tabla (por ejemplo, items) usando la siguiente declaración:

CREATE TABLE items (
    ID serial PRIMARY KEY,
    product VARCHAR (100) NOT NULL,
    price NUMERIC NOT NULL,
    discount NUMERIC
);

Hay cuatro campos en la items tabla:

  • id: la clave principal que identifica el elemento en la tabla de elementos.
  • producto: el nombre del producto.
  • precio: el precio del producto.
  • descuento: el descuento del producto.

Ahora insertamos algunos registros en la items tabla usando la declaración INSERT de la siguiente manera:

INSERT INTO items (product, price, discount)
VALUES
    ('A', 1000, 10),
    ('B', 1500, 20),
    ('C', 800, 5),
    ('D', 500, NULL);

Finalmente consultamos los precios netos de los productos utilizando lo siguiente:

SELECT
    product,
    (price - discount) AS net_price
FROM
    items;

Esto conducirá a lo siguiente:

si observa la cuarta fila, notará que el precio neto del producto D es nulo, lo que parece no ser correcto. El problema es que el descuento del producto D es nulo, por lo tanto, cuando tomamos el valor nulo para calcular el precio neto, PostgreSQL devuelve nulo. Para obtener el precio correcto, debemos asumir que si el descuento es nulo, es cero. Entonces podemos usar la función COALESCE de la siguiente manera:

SELECT
    product,
    (price - COALESCE(discount, 0)) AS net_price
FROM
    items;

Producción:

Publicación traducida automáticamente

Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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