sql >> Database teknologi >  >> RDS >> Oracle

NVL2() Funktion i Oracle

I Oracle Database er NVL2() funktion giver os mulighed for at erstatte nulværdier med en anden værdi.

Det ligner NVL() funktion, bortset fra at den accepterer tre argumenter i stedet for to. Dette giver os mulighed for at angive en anden værdi, der skal returneres i tilfælde af, at det første argument ikke er null.

Syntaks

Syntaksen ser sådan ud:

NVL2(expr1, expr2, expr3)

Hvis expr1 er ikke null, derefter NVL2 returnerer expr2 . Hvis expr1 er null, derefter NVL2 returnerer expr3 .

Eksempel

Her er et eksempel til demonstration:

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

Resultat:

3

Det første argument var nul, så det tredje argument blev returneret.

Og her er, hvad der sker, når det første argument ikke er nul:

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

Resultat:

2

Når erstatningsværdierne er nul

Hvis det andet eller tredje argument er null, kan du ende med et nulresultat.

Eksempel:

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

Resultat:

       r1        r2 
_________ _________ 
   (null)    (null)

Angående den første linje SET NULL '(null)'; , tilføjede jeg denne linje, så min SQLcl-session returnerer denne værdi, når resultatet er null.

Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null opstår som et resultat af en SQL SELECT udmelding.

Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres (som jeg har gjort her).

Ugyldigt argumentantal

Kaldning af funktionen uden at sende nogen argumenter resulterer i en fejl:

SELECT NVL2()
FROM DUAL;

Resultat:

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

Og at sende for mange argumenter medfører også en fejl:

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

Resultat:

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

  1. Hvordan sletter jeg et fast antal rækker med sortering i PostgreSQL?

  2. Masse Salesforce-indlæg fra Microsoft Access

  3. Sådan får du Record med Max Value i MySQL

  4. Django Migrations:A Primer