sql >> Database >  >> RDS >> Oracle

Hoe de NVL()-functie te gebruiken in Oracle

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


  1. Gebruikmakend van caching contrib's pg_prewarm en pg_hibernator in PostgreSQL 9.4.

  2. Hoe u kunt profiteren van de nieuwe partitioneringsfuncties in PostgreSQL 11

  3. cursor:pin S wacht op X

  4. Hoe genereer ik geneste json-objecten met behulp van mysql native json-functies?