I Oracle Database, NULLIF()
funktion jämför två uttryck och returnerar null
om båda uttrycken är lika. Om de inte är lika, returnerar funktionen det första uttrycket.
Syntax
Syntaxen ser ut så här:
NULLIF(expr1, expr2)
Exempel
Här är ett exempel att visa:
SELECT NULLIF(5, 7)
FROM DUAL;
Resultat:
5
I det här fallet var argumenten inte lika, så funktionen returnerade det första argumentet.
Så här händer när båda argumenten är lika:
SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL;
Resultat:
null
Vi kan se att NULLIF()
returnerar null
när båda argumenten är lika
Angående den första raden SET NULL 'null';
, jag lade till det så att min SQLcl-session returnerar null
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. Här specificerade jag att strängen null
bör returneras.
Jämfört med CASE
NULLIF()
funktion är motsvarigheten till följande CASE
uttryck:
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
Ogiltigt antal argument
Att anropa funktionen utan att skicka några argument resulterar i ett fel:
SELECT NULLIF()
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 NULLIF(1, 2, 3)
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"