I PostgreSQL returnerar funktionen COALESCE det första argumentet som inte är tomt. Den används i allmänhet tillsammans med SELECT-anvisningen för att hantera nollvärden på ett effektivt sätt.

Syntax: COALESCE (argument_1, argument_2, …);

Funktionen COALESCE accepterar ett obegränsat antal argument. Den returnerar det första argumentet som inte är noll. Om alla argument är noll, returnerar COALESCE-funktionen noll. e COALESCE-funktionen utvärderar argumenten från vänster till höger tills den hittar det första argumentet som inte är noll. Alla återstående argument från det första icke-nollargumentet utvärderas inte.

Exempel:
För demonstrationens skull skapar vi först en tabell (låt oss säga items) med hjälp av följande instruktion:

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

Det finns fyra fält i items tabellen:

  • id: den primära nyckeln som identifierar objektet i tabellen items.
  • produkt: produktens namn.
  • pris: produktens pris.
  • rabatt: produktens rabatt.

Nu infogar vi några poster i items tabellen med hjälp av INSERT-anvisningen enligt följande:

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

Slutligt frågar vi efter produkternas nettopriser med hjälp av följande:

SELECT product, (price - discount) AS net_priceFROM items;

Detta leder till följande:

Om du tittar på den fjärde raden kommer du att märka att nettopriset för produkten D är noll, vilket inte verkar korrekt. Problemet är att rabatten för produkt D är noll, så när vi använder nollvärdet för att beräkna nettopriset returnerar PostgreSQL noll. För att få rätt pris måste vi anta att om rabatten är noll är den noll. Då kan vi använda funktionen COALESCE enligt följande:

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

Output:

Article Tags :

admin

Lämna ett svar

Din e-postadress kommer inte publiceras.

lg