I Oracle Database er NULLIF()
funktion sammenligner to udtryk og returnerer null
hvis begge udtryk er ens. Hvis de ikke er ens, returnerer funktionen det første udtryk.
Syntaks
Syntaksen ser sådan ud:
NULLIF(expr1, expr2)
Eksempel
Her er et eksempel til demonstration:
SELECT NULLIF(5, 7)
FROM DUAL;
Resultat:
5
I dette tilfælde var argumenterne ikke ens, og derfor returnerede funktionen det første argument.
Her er, hvad der sker, når begge argumenter er lige store:
SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL;
Resultat:
null
Vi kan se, at NULLIF()
returnerer null
når begge argumenter er ens
Angående den første linje SET NULL 'null';
, jeg tilføjede det, så min SQLcl-session returnerer null
når resultatet er nul.
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. Her specificerede jeg, at strengen null
skal returneres.
Sammenlignet med CASE
NULLIF()
funktion svarer til følgende CASE
udtryk:
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
Ugyldigt argumentantal
Kaldning af funktionen uden at sende nogen argumenter resulterer i en fejl:
SELECT NULLIF()
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 NULLIF(1, 2, 3)
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"