Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction NULLIF() dans Oracle

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"