In Oracle Database, de NULLIF()
functie vergelijkt twee uitdrukkingen en retourneert null
als beide uitdrukkingen gelijk zijn. Als ze niet gelijk zijn, retourneert de functie de eerste uitdrukking.
Syntaxis
De syntaxis gaat als volgt:
NULLIF(expr1, expr2)
Voorbeeld
Hier is een voorbeeld om te demonstreren:
SELECT NULLIF(5, 7)
FROM DUAL;
Resultaat:
5
In dit geval waren de argumenten niet gelijk, en dus retourneerde de functie het eerste argument.
Dit is wat er gebeurt als beide argumenten gelijk zijn:
SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL;
Resultaat:
null
We kunnen zien dat NULLIF()
retourneert null
wanneer beide argumenten gelijk zijn
Met betrekking tot de eerste regel SET NULL 'null';
, ik heb dat toegevoegd zodat mijn SQLcl-sessie null
returns retourneert wanneer het resultaat nul 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. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Vergeleken met CASE
De NULLIF()
functie is het equivalent van de volgende CASE
uitdrukking:
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
Ongeldig aantal argumenten
Het aanroepen van de functie zonder het doorgeven van argumenten resulteert in een fout:
SELECT NULLIF()
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 NULLIF(1, 2, 3)
FROM DUAL;
Resultaat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"