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

Fonction Oracle NULLIF()

Ce tutoriel SQL fournit des explications, des exemples pour la fonction NULLIF dans Oracle

La fonction NULLIF est une fonction très utile. Elle compare deux valeurs et renvoie null si les valeurs sont identiques, sinon renvoie la première valeur

expr1 :ce sont les valeurs ou l'expression source qui vont être comparées à expr2
expr2 :C'est aussi la valeur source qui est comparée à expr1

Vous ne pouvez pas spécifier le littéral NULL pour la première valeur

 

SQL> sélectionnez nullif(NULL,1) de dual ;
sélectionnez nullif(NULL,1) de dual
*
ERREUR à la ligne 1 :
ORA-00932 :types de données incohérents :attendu - obtenu CHAR

Utilisation et exemple

SQL> sélectionnez nullif(1,1) à partir de dual ;NULLIF(1,1)
-----------SQL> sélectionnez nullif(1,2) à partir de dual ;NULLIF( 1,2)
-----------
1

Remarque importante

1)Cette instruction est très similaire à l'instruction case et est équivalente à
CASE WHEN expr1=expr2 THEN NULL ELSE expr1 END

2) Si les deux arguments sont des types de données numériques, Oracle Database détermine l'argument avec la priorité numérique la plus élevée, convertit implicitement l'autre argument en ce type de données et renvoie ce type de données. Si les arguments ne sont pas numériques, ils doivent être du même type de données oracle, sinon Oracle renvoie une erreur.

 

SQL> sélectionnez nullif(1,'apple') from dual ;
select nullif(1,'apple') from dual
*
ERREUR à la ligne 1 :
ORA-00932 :types de données incohérents :NUMBER attendu a obtenu CHAR

SQL> sélectionnez nullif('apple',1) from dual ;
select nullif('apple',1) from dual
*
ERREUR à la ligne 1 :
ORA-00932 :types de données incohérents :CHAR attendu a obtenu NUMBER

Plus d'exemples

select first_name, length(first_name),last_name,length(last_name), nullif(length(first_name),length(last_name)) from emp;SELECT NULLIF('Sunday', 'Friday') AS check FROM dual; 

Un autre cas d'utilisation de la fonction NULLIF sera si vous souhaitez répertorier les employés qui ont changé d'emploi depuis leur embauche, comme indiqué par un job_id dans la table job_history différent du job_id actuel dans la table des employés

select emp_name,nullif(b.job_id,a.job_id) old_job parmi les employés a, job_history b où a.emp_id=b.emp_id ;

FAQ pour la fonction Nullif

Comment éviter une erreur de division par zéro à l'aide de la fonction NULLIF

Nous obtenons l'erreur de division par zéro si le dénominateur de la division est zéro. Nous pouvons éviter en utilisant la fonction NULLIF comme ci-dessous
sélectionnez 100/ nullif(0,0) de dual ;
Maintenant, puisque les deux valeurs sont égales, Nullif renverra null et l'expression entière renverra null à la place de toute erreur. Voici comment vous pouvez utiliser lorsque vous traitez avec une colonne réelle
select col2/ nullif(col1,0) from exp;

Articles connexes

Instruction de mise à jour dans oracle
Fonction NVL2 dans Oracle
Fonction NVL dans Oracle
Fonction Coalesce dans Oracle
Fonctions de ligne unique dans sql
Instruction de suppression de la table dans Oracle

Ressource externe
Référence Oracle pour NULLIF