Dans Oracle Database, le NULLIF() la fonction compare deux expressions et renvoie null si les deux expressions sont égales. S'ils ne sont pas égaux, la fonction renvoie la première expression.
Syntaxe
La syntaxe ressemble à ceci :
NULLIF(expr1, expr2) Exemple
Voici un exemple pour illustrer :
SELECT NULLIF(5, 7)
FROM DUAL; Résultat :
5
Dans ce cas, les arguments n'étaient pas égaux et la fonction a donc renvoyé le premier argument.
Voici ce qui se passe lorsque les deux arguments sont égaux :
SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL; Résultat :
null
Nous pouvons voir que NULLIF() renvoie null quand les deux arguments sont égaux
Concernant la première ligne SET NULL 'null'; , j'ai ajouté cela pour que ma session SQLcl renvoie null chaque fois que le résultat est nul.
Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null se produit à la suite d'un SQL SELECT déclaration.
Cependant, vous pouvez utiliser SET NULL pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null doit être retourné.
Comparé à CASE
Le NULLIF() fonction est l'équivalent du CASE suivant expression :
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END Nombre d'arguments non valides
L'appel de la fonction sans passer d'arguments entraîne une erreur :
SELECT NULLIF()
FROM DUAL; Résultat :
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Et passer trop d'arguments provoque également une erreur :
SELECT NULLIF(1, 2, 3)
FROM DUAL; Résultat :
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"