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"