Valeurs NULL

Une valeur NULL indique que la valeur est inconnue. Une valeur NULL est différente d'une valeur vide ou de zéro. Deux valeurs NULL ne sont pas égales. Les comparaisons de deux valeurs NULL, ou d'une valeur NULL et d'une autre valeur, renvoient le message « inconnu » car la valeur de chaque NULL est inconnue.

Les valeurs NULL indiquent généralement des données inconnues, non applicables ou devant être ajoutées ultérieurement. Le montant moyen, par exemple, ne peut pas être connu à l'instant où le client effectue une commande.

Voici quelques informations sur les valeurs NULL :

  • Pour tester des valeurs NULL dans une requête, utilisez IS NULL ou IS NOT NULL dans la clause WHERE.

  • Lorsque les résultats de la requête sont visualisés dans l'Éditeur de code de SQL Server Management Studio, les valeurs Null sont affichées sous la forme NULL dans le jeu de résultats.

  • Les valeurs NULL peuvent être insérées dans une colonne en spécifiant explicitement NULL dans une instruction INSERT ou UPDATE, en ne citant pas une colonne dans une instruction INSERT, ou encore en ajoutant une nouvelle colonne à une table existante à l'aide de l'instruction ALTER TABLE.

  • Les valeurs NULL ne peuvent pas être utilisées comme critère de différenciation entre une ligne dans une table et une autre, en tant que clés primaires ou étrangères, par exemple.

En programmation, vous pouvez implémenter une vérification de la présence de valeurs NULL afin que certains calculs ne soient effectués que sur les lignes possédant des données valides (différentes de NULL). Par exemple, un rapport peut imprimer la colonne de la sécurité sociale uniquement si elle comporte des données non NULL. L'élimination de valeurs NULL lors des calculs peut s'avérer importante pour certains calculs (tels que les moyennes) risquant d'être faussés par la présence de colonnes NULL.

Si vous pensez que des valeurs NULL que vous ne souhaitez pas voir apparaître dans vos données risquent d'y être présentes, vous devez créer des requêtes et des instructions de mise à jour de ces données pour soit éliminer ces valeurs NULL, soit les transformer en d'autres valeurs.

Important

Afin de minimiser la maintenance et les effets possibles sur les requêtes et les rapports existants, nous vous recommandons de limiter l'utilisation des valeurs NULL. Planifiez vos requêtes et vos instructions de mise à jour pour que les valeurs NULL présentent un minimum de répercussions.

Lorsque des valeurs NULL sont présentes dans les données, les opérateurs logiques et les opérateurs de comparaison peuvent renvoyer la valeur UNKNOWN au lieu de TRUE ou de FALSE. Cette logique tri-valuée nécessaire est source de nombreuses erreurs dans les applications. Ces tableaux présentent les effets dus à l'introduction de valeurs NULL dans les comparaisons.

Le tableau suivant répertorie les résultats obtenus en appliquant un opérateur AND (et) à deux opérandes booléens.

AND

TRUE

UNKNOWN

FALSE

TRUE

TRUE

UNKNOWN

FALSE

UNKNOWN

UNKNOWN

UNKNOWN

FALSE

FALSE

FALSE

FALSE

FALSE

Le tableau suivant répertorie les résultats obtenus en appliquant un opérateur OR (ou) à deux opérandes booléens.

OR

TRUE

UNKNOWN

FALSE

TRUE

TRUE

TRUE

TRUE

UNKNOWN

TRUE

UNKNOWN

UNKNOWN

FALSE

TRUE

UNKNOWN

FALSE

Le tableau suivant illustre comment l'opérateur NOT (de négation) exclut ou inverse le résultat d'un opérande booléen.

Le résultat d'une expression booléenne à laquelle un opérateur NOT est appliqué

est évalué à

TRUE

FALSE

UNKNOWN

UNKNOWN

FALSE

TRUE

La norme ISO utilise les mots clés IS NULL et IS NOT NULL afin de tester la présence de valeurs Null.

Le résultat d'une expression booléenne à laquelle un opérateur IS NULL

est appliqué

est évalué à

Le résultat d'une expression booléenne à laquelle un opérateur IS NOT NULL est appliqué

est évalué à

TRUE

FALSE

TRUE

TRUE

NULL

TRUE

NULL

FALSE

FALSE

FALSE

FALSE

TRUE

Transact-SQL propose également une extension pour le traitement des valeurs NULL. Si l'option ANSI_NULLS est définie sur OFF, les comparaisons entre valeurs NULL, telles que NULL = NULL, sont évaluées avec la valeur TRUE. Les comparaisons entre des valeurs NULL et d'autres valeurs sont évaluées avec la valeur FALSE.