I Oracle Database, NVL2()
funktion tillåter oss att ersätta nollvärden med ett annat värde.
Det liknar NVL()
funktion, förutom att den accepterar tre argument istället för två. Detta tillåter oss att ange ett annat värde att returnera i händelse av att det första argumentet inte är null.
Syntax
Syntaxen ser ut så här:
NVL2(expr1, expr2, expr3)
Om expr1
är inte null, sedan NVL2
returnerar expr2
. Om expr1
är null, sedan NVL2
returnerar expr3
.
Exempel
Här är ett exempel att visa:
SELECT NVL2(null, 2, 3)
FROM DUAL;
Resultat:
3
Det första argumentet var null och det tredje argumentet returnerades.
Och här är vad som händer när det första argumentet inte är null:
SELECT NVL2(1, 2, 3)
FROM DUAL;
Resultat:
2
När ersättningsvärdena är noll
Om det andra eller tredje argumentet är null, kan du få ett null-resultat.
Exempel:
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örsta raden SET NULL '(null)';
, lade jag till den här raden så att min SQLcl-session returnerar det värdet när resultatet är null.
Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null
uppstår som ett resultat av en SQL SELECT
påstående.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras (som jag har gjort här).
Ogiltigt antal argument
Att anropa funktionen utan att skicka några argument resulterar i ett fel:
SELECT NVL2()
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Och att skicka för många argument orsakar också ett fel:
SELECT NVL2(1, 2, 3, 4)
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"