Maybaygiare.org

Blog Network

HVORDAN BRUKE COALESCE i PostgreSQL

SAMMENDRAG: denne artikkelen gjennomgår metoder for håndtering AV NULLVERDIER I PostgreSQL ved hjelp AV COALESCE-funksjonen. Emner diskutert med eksempler inkluderer:

1. Hva ER EN COALESCE Funksjon?

A. Noen advarsler

2. Forhindre NULLVERDIER med COALESCE

I dette innlegget skal vi forstå hva COALESCE-funksjonen er og hvordan du bruker Den I PostgreSQL.

Hva er EN COALESCE-Funksjon?

COALESCE ER en system innebygd funksjon som kan betraktes som en av de betingede uttrykkene som er tilgjengelige I PostgreSQL. NULLIF, GREATEST, LEAST og COALESCE er typer betingede uttrykk I PostgreSQL.

COALESCE-funksjonen returnerer det første ikke-NULL-uttrykket i den angitte listen. Hvis alle argumentene ER NULL, vil DEN returnere NULL som utgang.

den støttede syntaksen er:

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

parametrene eller argumentene er:

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

Advarsler

noen punkter om COALESCE-funksjonen:

  • parameterne testes for ikke-NULLVERDIER.
  • parametrene skal alle være samme datatype. Ellers vil det resultere i en feil.
  • COALESCE-funksjonen godtar et ubegrenset antall argumenter.
  • det tar argumentene fra venstre til høyre. Coalesce-funksjonen gir lignende kompatibilitet SOM NVL og IFNULL som er tilgjengelige i andre DBMS.
  • CASE og COALESCE kan brukes til lignende formål, men fordelen med Å bruke COALESCE er at det krever langt mindre skriving.
  • det vil slutte å evaluere parametere så snart den første IKKE-NULL-verdien er nådd.

Eksempler

1. SLIK FUNGERER COALESCE med en IKKE-NULL verdi for den første parameteren:

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

COALESCE-funksjonen finner det første ikke-NULL-uttrykket i starten, så det vil alltid gi det samme resultatet uansett hva de resterende parametrene inneholder.

2. SLIK FUNGERER COALESCE når EN NULLVERDI er den første parameteren:

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

COALESCE-funksjonen fant EN NULLVERDI i den første parameteren, så den fortsatte til den ANDRE parameteren, som IKKE VAR NULL, slik at parameterets verdi ble returnert.

3. Her er hvordan det tolker flere NULLVERDIER:

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

Det er flere Nullverdier i dette uttrykket, men fordi den første IKKE-NULLVERDIEN ble nådd på den tredje parameteren, ble alle gjenværende verdier ignorert.

4. Hvis datatypene til parametrene ikke samsvarer, vil dette gi en feil:

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

den første parameteren er et heltall, og nå () – funksjonen returnerer et tidsstempel med tidssone. Fordi disse parameterne ikke er av samme type, signaturen til funksjonen er ugyldig, og så produserer og feil.

5. Du kan bruke andre funksjoner som parametere i COALESCE-funksjonen:

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

Forhindre NULLVERDIER med COALESCE

en nyttig applikasjon av COALESCE-funksjonen er å forhindre NULLVERDIER i å vises i spørringsresultater.

Eksempel

1. Opprett en tabell «salg» ved HJELP AV KOMMANDOEN OPPRETT TABELL:

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

2. Sett inn data i tabellen «salg»:

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. Hvis vi prøver å utføre trekke en verdi i kolonnen «rabatt» fra en verdi i kolonnen «beløp», returnerer den siste raden EN NULLVERDI. Dette er fordi noen aritmetikk utført PÅ EN NULLVERDI vil resultere I NULL.

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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.