sql >> Database >  >> RDS >> Oracle

NVL2() Functie in Oracle

In Oracle Database, de NVL2() functie stelt ons in staat om null-waarden te vervangen door een andere waarde.

Het is vergelijkbaar met de NVL() functie, behalve dat het drie argumenten accepteert in plaats van twee. Dit stelt ons in staat om een ​​andere waarde op te geven die moet worden geretourneerd in het geval dat het eerste argument niet null is.

Syntaxis

De syntaxis gaat als volgt:

NVL2(expr1, expr2, expr3)

Als expr1 is niet null, dan NVL2 retourneert expr2 . Als expr1 is null, dan NVL2 retourneert expr3 .

Voorbeeld

Hier is een voorbeeld om te demonstreren:

SELECT NVL2(null, 2, 3)
FROM DUAL;

Resultaat:

3

Het eerste argument was null en dus werd het derde argument geretourneerd.

En dit is wat er gebeurt als het eerste argument niet nul is:

SELECT NVL2(1, 2, 3)
FROM DUAL;

Resultaat:

2

Als de vervangingswaarden nul zijn

Als het tweede of derde argument null is, zou je een null-resultaat kunnen krijgen.

Voorbeeld:

SET NULL '(null)';
SELECT 
    NVL2(1, null, 3) AS "r1",
    NVL2(null, 2, null) AS "r2"
FROM DUAL;

Resultaat:

       r1        r2 
_________ _________ 
   (null)    (null)

Met betrekking tot de eerste regel SET NULL '(null)'; , heb ik deze regel toegevoegd zodat mijn SQLcl-sessie die waarde retourneert wanneer het resultaat null is.

Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null treedt op als resultaat van een SQL SELECT uitspraak.

U kunt echter SET NULL . gebruiken om een ​​andere tekenreeks op te geven die moet worden geretourneerd (zoals ik hier heb gedaan).

Ongeldig aantal argumenten

Het aanroepen van de functie zonder het doorgeven van argumenten resulteert in een fout:

SELECT NVL2()
FROM DUAL;

Resultaat:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"

En het doorgeven van te veel argumenten veroorzaakt ook een fout:

SELECT NVL2(1, 2, 3, 4)
FROM DUAL;

Resultaat:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"

  1. Het herstelmodel van een SQL Server-database wijzigen met T-SQL

  2. Hoe SQLite Total() werkt

  3. Hoe beïnvloeden IMMUTABLE, STABLE en VOLATILE trefwoorden het gedrag van de functie?

  4. Hoe om te gaan met daglichtbesparing in de Oracle-database?