yhteenveto: tässä artikkelissa tarkastellaan menetelmiä, joilla käsitellään NOLLIARVOJA PostgreSQL: ssä COALESCE-funktion avulla. Esimerkkien kanssa käsiteltäviä aiheita ovat:
1. Mikä on COALESCE funktio?
a. joitakin varoituksia
2. Estämällä NULL-arvot COALESCE
tässä viestissä aiomme ymmärtää, mikä COALESCE-funktio on ja miten sitä käytetään PostgreSQL: ssä.
mikä on KOALITIOFUNKTIO?
COALESCE on järjestelmän sisäinen funktio, jota voidaan pitää yhtenä PostgreSQL: ssä käytettävissä olevista ehdollisista lausekkeista. NULLIF, GREATEST, LEAST ja COALESCE ovat PostgreSQL: n ehdollisten lausekkeiden tyyppejä.
COALESCE-funktio palauttaa määritetyn luettelon ensimmäisen Ei-NULL-lausekkeen. Jos kaikki argumentit ovat nollia, se palaa nolliksi tulosteenaan.
tuettu syntaksi on:
parametrit tai argumentit ovat:
value_1,value_2,value_3,........value_n
Caveats
muutamia kohtia COALESCE-funktiosta:
- parametreille testataan ei-NULL-arvoja.
- parametrien tulee olla kaikki samaa datatyyppiä. Muuten se johtaa virheeseen.
- COALESCE-funktio hyväksyy rajoittamattoman määrän argumentteja.
- se vie argumentit vasemmalta oikealle.
- Coalesce-funktio tarjoaa samankaltaisen yhteensopivuuden, kuten NVL ja IFNULL, jotka ovat saatavilla muissa DBMS: issä.
- casea ja COALESCEA voidaan käyttää vastaaviin tarkoituksiin, mutta COALESCEN käytön etuna on se, että se vaatii huomattavasti vähemmän konekirjoitusta.
- se lopettaa parametrien arvioinnin heti, kun ensimmäinen ei-nolla-arvo saavutetaan.
esimerkkejä
1. Näin COALESCE toimii ei-NULL-arvolla ensimmäiselle parametrille:
postgres=# select coalesce (1,null,2); coalesce ---------- 1(1 row)
COALESCE-funktio löytää ensimmäisen Ei-NULL-lausekkeen alussa, joten se tuottaa aina saman tuloksen riippumatta siitä, mitä jäljellä olevat parametrit sisältävät.
2. Näin COALESCE toimii, kun nolla-arvo on ensimmäinen parametri:
postgres=# select coalesce (null,1,2); coalesce ---------- 1(1 row)
COALESCE-funktio löysi ensimmäisestä parametrista nollan arvon, joten se jatkoi toiseen parametriin, joka ei ollut nolla, joten parametrin arvo palautettiin.
3. Näin se tulkitsee useita NULL-arvoja:
postgres=# SELECT coalesce(null,null, 1, 2, 3, null, 4); coalesce ---------- 1(1 row)
tässä lausekkeessa on useita Nulleja, mutta koska ensimmäinen ei-NULL-arvo saavutettiin kolmannella parametrilla, kaikki jäljellä olevat arvot jätettiin huomiotta.
4. Jos parametrien tietotyypit eivät täsmää, tämä tuottaa virheen:
postgres=# SELECT coalesce(1,now(),null);ERROR: COALESCE types integer and timestamp with time zone cannot be matched
ensimmäinen parametri on kokonaisluku, ja now () – funktio palauttaa aikaleiman aikavyöhykkeellä. Koska nämä parametrit eivät ole samaa tyyppiä, allekirjoitus funktio on virheellinen, ja niin tuottaa ja virhe.
5. Voit käyttää muita funktioita parametreina COALESCE-funktion sisällä:
postgres=# SELECT coalesce(nvl(null,199),least(8,null),avg(9.9)); coalesce ---------- 199(1 row)
estäen nolla-arvoja COALESCE
coalesce-funktion hyödyllinen sovellus on estää nolla-arvojen näkyminen kyselytuloksissa.
esimerkki
1. Luo taulukko ”myynti”käyttämällä Luo taulu-komentoa:
postgres=# CREATE TABLE sales (serial_id int primary key, product_name varchar(50), amount numeric, discount numeric); CREATE TABLE
2. Lisätään tiedot taulukkoon ”myynti”:
3. Jos yritämme suorittaa vähentää arvo ” alennus ”sarakkeessa arvo” määrä ” sarake, viimeinen rivi palauttaa nolla-arvo. Tämä johtuu siitä, että mikä tahansa aritmeettinen suoritus on nolla, johtaa nollaan.
postgres=# SELECT amount - discount as "final bill" FROM sales; final bill ------------ 990 1480 800 <=Null(4 rows)