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 NULLLe 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 C2Le résultat suit.
C1 C2 1 2 1 - 2 - - 2