Nolla-arvo on kenttä, joka on jätetty tyhjäksi tai sille ei ole määritetty arvoa.
NULL-arvot ovat yleisiä tietokannoissa, varsinkin kun tuodaan ulkoisia tietoja. Siksi, ellei sarake sisällä rajoitusta NULL-arvojen estämiseksi, tietokantakone käyttää todennäköisesti NULL-arvoa puuttuvan arvon kohdalla.
Vaikka NULL-arvot ovat yleisiä, ne voivat johtaa tietokantaongelmiin, koska tietokannalla ei ole arvoa työskenneltäväksi. Siksi on hyvä käytäntö soveltaa toimintoja NULL-arvojen käsittelemiseen kyselyissäsi.
Tässä viestissä opimme muuttamaan NULL-arvot tietyssä taulukossa sisältämään oletusarvon, joka ei todennäköisesti aiheuta toimintavirheitä tietokannassasi.
Oracle NVL -toiminto
Kuten mainittiin, tämän toiminnon avulla voimme korvata NULL-arvot merkityksellisemmillä arvoilla. Toiminnon syntaksi on annettu alla:
NVL ( Laus1, Laus2 ) ;
Funktio hyväksyy kaksi pääargumenttia:
Laus1 ja Laus2 – Tämä parametri määrittää arvon, joka testataan NULL-arvoille. Jos laus1:n arvo on NULL, funktio palauttaa lausekkeen 2 arvon.
Molemmilla lausekkeilla voi olla samanlaisia tai erilaisia tietotyyppejä. Jos vastaavat tietotyypit eroavat, tietokantakone voi suorittaa implisiittisen muunnoksen mahdollistaakseen yhteensopivuuden tietotyyppien kanssa. Jos vastaavien tietotyyppien muuntaminen on mahdotonta, tietokantamoottori antaa virheen.
Oracle NVL() -funktion käyttöesimerkki
Seuraava esimerkki havainnollistaa NVL()-funktion peruskäyttöä:
Esimerkki 1
Harkitse seuraavaa esimerkkiä:
valitse lvl ( 'Hei' , 'maailman' ) dual;Edellisessä esimerkissä käytämme NVL()-funktiota testataksemme, onko merkkijono 'hello' NULL-arvo. Koska annettu arvo ei ole nolla, funktio palauttaa merkkijonon 'hello'.
Esimerkki 2
Harkitse alla olevaa toista esimerkkiä:
valitse lvl ( tyhjä, 'maailman' ) dual;Tässä tapauksessa, koska ensimmäinen lauseke on NULL-arvo, kysely palauttaa toisen merkkijonon alla olevan kuvan mukaisesti:
Esimerkki 3
Voimme myös käyttää NVL()-funktiota korvaamaan NULl-arvot tietokantataulukossa. Harkitse alla olevaa työntekijöiden taulukkoa:
valitse FIRST_NAME, LAST_NAME, EMAIL, PALKKA, COMMISSION_PCT EMPLOYEES emp;Tuloksena oleva taulukko:
Kuten näemme, Commission_pct-sarake sisältää NULl-arvot. Voimme luoda kyselyn korvataksemme Commission_pct-sarakkeen NULL-arvot nollalla, kuten alla olevassa esimerkissä näkyy:
valitse FIRST_NAME, LAST_NAME, EMAIL, SALARY, nvl ( COMMISSION_PCT, 0 )alkaen EMPLOYEES emp;
Edellisessä esimerkkikyselyssä testaamme NVL()-funktiota Commission_pct -sarakkeen arvoa NULL-arvoille. Jos arvo on NULL, palautetaan 0. Muussa tapauksessa palautetaan alkuperäinen arvo.
Tämän pitäisi antaa meille mahdollisuus korvata sarakkeen NULL-arvot 0:lla alla olevan taulukon mukaisesti:
Voimme käyttää tätä UPDATE-käskyn kanssa tai tallentaa tuloksena olevan arvon taulukkonäkymään.
Johtopäätös
Tässä opetusohjelmassa opit käyttämään Oraclen NVL()-funktiota NULL-arvojen korvaamiseen oletusarvoilla. On hyvä pitää mielessä, että vaikka NVL()-funktio muistuttaa läheisesti COALESCE()-funktiota, NVL()-funktio voi palauttaa vain yhden arvon. Samanaikaisesti coalesce()-funktio voi palauttaa useita arvoja.
Jos etsit funktiota, joka voi ottaa enemmän kuin kaksi argumenttia ilman coalesce()-funktiota, harkitse NVL2()-funktiota.