resume: denne artikel gennemgår metoder til håndtering af NULL-værdier i POSTGRESCL ved hjælp af COALESCE-funktionen. Emner diskuteret med eksempler omfatter:
1. Hvad er en COALESCE funktion?
a. nogle advarsler
2. Forebyggelse af NULL-værdier med KOALESCE
i dette indlæg skal vi forstå, hvad COALESCE-funktionen er, og hvordan man bruger den i Postgreskl.
Hvad er en COALESCE funktion?
COALESCE er en systemindbygget funktion, der kan betragtes som et af de betingede udtryk, der er tilgængelige i postgraduate. NULLIF, størst, mindst og sammenfaldende er typerne af betingede udtryk i postgraduate.
funktionen COALESCE returnerer det første IKKE-NULL-udtryk i den angivne liste. Hvis alle argumenterne er NULL, vil det returnere NULL som dets output.
den understøttede syntaks er:
COALESCE(value_1,value_2,value_3,........value_n)
parametrene eller argumenterne er:
value_1,value_2,value_3,........value_n
advarsler
et par punkter om COALESCE-funktionen:
- parametrene testes for IKKE-NULL-værdier.
- parametrene skal alle være den samme datatype. Ellers vil det resultere i en fejl.
- funktionen COALESCE accepterer et ubegrænset antal argumenter.
- det tager argumenterne fra venstre mod højre.
- Coalesce-funktion giver lignende kompatibilitet som NVL og IFNULL, som er tilgængelige i andre DBMS.
- CASE og COALESCE kan bruges til lignende formål, men fordelen ved at bruge COALESCE er, at det kræver langt mindre typing.
- det stopper med at evaluere parametre, så snart den første ikke-NULL-værdi er nået.
eksempler
1. Sådan fungerer COALESCE med en ikke-NULL-værdi for den første parameter:
postgres=# select coalesce (1,null,2); coalesce ---------- 1(1 row)
COALESCE-funktionen finder det første IKKE-NULL-udtryk i starten, så det vil altid producere det samme resultat uanset hvad de resterende parametre indeholder.
2. Sådan fungerer COALESCE, når en NULL-værdi er den første parameter:
postgres=# select coalesce (null,1,2); coalesce ---------- 1(1 row)
COALESCE-funktionen fandt en NULL-værdi i den første parameter, så den fortsatte til den anden parameter, som ikke var NULL, så parameterens værdi blev returneret.
3. Sådan fortolker det flere NULL-værdier:
postgres=# SELECT coalesce(null,null, 1, 2, 3, null, 4); coalesce ---------- 1(1 row)
Der er flere nuller i dette udtryk, men fordi den første ikke-NULL-værdi blev nået på den tredje parameter, blev alle resterende værdier ignoreret.
4. Hvis datatyperne for parametrene ikke stemmer overens, vil dette give en fejl:
postgres=# SELECT coalesce(1,now(),null);ERROR: COALESCE types integer and timestamp with time zone cannot be matched
den første parameter er et heltal, og funktionen NU() Returnerer et tidsstempel med tidsområdet. Fordi disse parametre ikke er af samme type, er signaturen af funktionen ugyldig, og så producerer og fejl.
5. Du kan bruge andre funktioner som parametre inde i COALESCE-funktionen:
postgres=# SELECT coalesce(nvl(null,199),least(8,null),avg(9.9)); coalesce ---------- 199(1 row)
forebyggelse af NULL-værdier med COALESCE
en nyttig anvendelse af COALESCE-funktionen er at forhindre, at NULL-værdier vises i forespørgselsresultater.
eksempel
1. Opret en tabel “salg”ved hjælp af kommandoen Opret tabel:
postgres=# CREATE TABLE sales (serial_id int primary key, product_name varchar(50), amount numeric, discount numeric); CREATE TABLE
2. Indsæt 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 forsøger at udføre trække en værdi i kolonnen “rabat” fra en værdi i kolonnen “Beløb”, returnerer den sidste række en NULL-værdi. Dette skyldes, at enhver aritmetik, der udføres på en NULL-værdi, vil resultere i NULL.
postgres=# SELECT amount - discount as "final bill" FROM sales; final bill ------------ 990 1480 800 <=Null(4 rows)