Traitement des valeurs nulles

Une valeur nulle indique l'absence d'une valeur de colonne dans une ligne. Une valeur nulle est une valeur inconnue; elle n'est pas la même chose que zéro ou que tous les blancs.

A propos de cette tâche

Les valeurs nulles peuvent être utilisées comme condition dans les clauses WHERE et HAVING. Par exemple, une clause WHERE peut spécifier une colonne qui, pour certaines lignes, contient une valeur nulle. Un prédicat de comparaison de base utilisant une colonne qui contient des valeurs nulles ne sélectionne pas une ligne qui a une valeur nulle pour la colonne. En effet, une valeur nulle n'est ni inférieure, ni égale, ni supérieure à la valeur spécifiée dans la condition. Le prédicat IS NULL est utilisé pour vérifier les valeurs nulles.

Exemples

Exemple 1 : Sélection de lignes contenant une valeur nulle dans une colonne
Pour sélectionner les valeurs de toutes les lignes qui contiennent une valeur nulle pour le numéro de manager, vous pouvez exécuter l'instruction suivante :
SELECT DEPTNO, DEPTNAME, ADMRDEPT
  FROM DSN8C10.DEPT  
  WHERE MGRNO IS NULL

Le tableau suivant présente le résultat.

DEPTNO NOMDEPT ADMRDEPT
D01 DEVELOPMENT CENTER A00
F22 BRANCH OFFICE F2 E01
G22 BRANCH OFFICE G2 E01
H22 BRANCH OFFICE H2 E01
I22 BRANCH OFFICE I2 E01
J22 BRANCH OFFICE J2 E01
Exemple 2 : Sélection de lignes ne contenant pas de valeur nulle

Pour obtenir les lignes qui n'ont pas de valeur nulle pour le numéro de manager, vous pouvez modifier la clause WHERE de l'exemple précédent comme ceci :

WHERE MGRNO IS NOT NULL
Exemple 3 : Comparaison de valeurs contenant la valeur NULL
Un autre prédicat utile pour comparer des valeurs pouvant contenir la valeur NULL est le prédicat DISTINCT. La comparaison de deux colonnes à l'aide d'une comparaison d'égalité normale ( COL1 = COL2 ) sera vraie si les deux colonnes contiennent une valeur égale non nulle. Si les deux colonnes sont nulles, le résultat sera faux car nul n'est jamais égal à une autre valeur, même nulle. En utilisant le prédicat DISTINCT, les valeurs nulles sont considérées comme égales. Ainsi, COL1 n'est PAS DISTINCT de COL2 sera vrai si les deux colonnes contiennent une valeur non nulle égale et également lorsque les deux colonnes sont la valeur nulle.

Par exemple, supposons que vous souhaitiez sélectionner des informations dans deux tables contenant des valeurs nulles. Le premier tableau T1 comporte une colonne C1 avec les valeurs suivantes.

C1
2
1
nul

Le deuxième tableau comporte la colonne « C2 » avec les valeurs suivantes.

C2
2
nul

Supposons que vous émettiez l'instruction SELECT suivante :

SELECT * 
    FROM T1, T2
    WHERE C1 IS DISTINCT FROM C2

Le résultat suit.

C1 C2
1 2
1 -
2 -
- 2