Deze Oracle SQL-tutorial biedt uitleg, voorbeelden voor de NVL-functie in Oracle
Wat is de NVL()-functie in Oracle
NVL-functie in Oracle is een nestfunctie die wordt gebruikt om null-waarden te vervangen door bepaalde waarden
In de bovenstaande syntaxis
expr1 :het zijn de bronwaarden of expressie die null kunnen bevatten. U kunt de kolomnaam, functie op de kolomnaam opgeven
expr2:het is de doelwaarde die wordt geplaatst in het geval dat null wordt geretourneerd door expr1
Als expr1 null is, retourneert NVL expr2. Als expr1 niet null is, retourneert NVL expr1.
Belangrijke punten om op te merken
(1) De argumenten expr1 en expr2 kunnen elk datatype hebben. Als hun gegevenstypen verschillen, converteert Oracle Database impliciet de ene naar de andere. Als ze niet impliciet kunnen worden geconverteerd, retourneert de database een fout.
Als expr1 tekengegevens zijn, converteert Oracle Database expr2 naar het gegevenstype expr1 voordat ze worden vergeleken en retourneert VARCHAR2 in de tekenset van expr1.
Als expr1 numeriek is, bepaalt Oracle welk argument de hoogste numerieke prioriteit heeft, converteert het impliciet het andere argument naar dat datatype en retourneert dat datatype.
Dus de volgende verklaring zou slagen
select nvl(num-col ,10) from <table> select nvl(char-col ,'NA') from <table> select nvl(end_date,'01-MAY-18') from <table>
De volgende verklaring zou impliciete conversie doen
select nvl(char-col ,1) from <table>
De volgende verklaring zou niet werken
select nvl(end_date,'m/a') from <table> select nvl(user_id,'abc') from <table>
De NVL()-functie gebruiken
Deze functie is erg handig wanneer we geen null-waarden willen retourneren of in de numerieke berekening, omdat null hele waarden in null zou veranderen
Laten we neem een voorbeeld om het te begrijpen
We hebben een sales_people-tabel die de verkopen bevat die door verkopers zijn gedaan, commissie% op de verkopen, het salaris van de mensen. We willen het totale maandinkomen voor de verkopers berekenen. Verkoop kan null-waarden hebben
Verklaring zou zijn
select name,(salary + sales*commission/100) Monthy_income from sales_people;
Het retourneert null-waarden van alle mensen die in die periode geen verkopen hebben gedaan, omdat de berekening null-waarden zal hebben
Dit kan worden opgelost door de nvl-functie te gebruiken als
select name,(salary + nvl(sales,0)*commission/100) Monthly_income from sales_people;
Het is dus duidelijk erg handig bij het uitvoeren van wiskundige bewerkingen. NVL-functie in Oracle is een behoorlijk nuttige functie en kan op veel plaatsen worden gebruikt
Leest ook
oracle sql-datumfuncties
NULLIF-functie in Oracle
Instructie in oracle bijwerken
Coalesce-functie in Oracle
datumnotatie wijzigen in oracle
https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions105.htm