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