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"