Partager via


Possibilité de valeur Null et comparaisons logiques de trois valeurs

S’applique à : SQL Server

Si vous connaissez les types de données SQL Server, vous trouverez une sémantique et une précision similaires dans l’espace de noms System.Data.SqlTypes dans le .NET Framework. Il existe toutefois certaines différences, dont les principales sont décrites dans cette rubrique.

Valeurs Null

La principale différence entre les types de données CLR (Common Language Runtime) natifs et les types de données SQL Server est que l’ancien n’autorise pas les valeurs NULL, tandis que ce dernier fournit une sémantique NULL complète.

Les comparaisons sont affectées par les valeurs Null. Lors de la comparaison de deux valeurs x et y, si x ou y a la valeur Null, certaines comparaisons logiques évaluent à une valeur UNKNOWN plutôt que true ou false.

Type de données SqlBoolean

L’espace de noms System.Data.SqlTypes introduit un type SqlBoolean pour représenter cette logique à 3 valeurs. Les comparaisons entre les sqlTypes retournent un type de valeur SqlBoolean . La valeur UNKNOWN est représentée par la valeur Null du type SqlBoolean . Les propriétés IsTrue, IsFalse et IsNull sont fournies pour vérifier la valeur d’un type SqlBoolean.

Opérations, fonctions et valeurs Null

Tous les opérateurs arithmétiques (+, -, *, /, %), les opérateurs au niveau du bit (~, &et |) et la plupart des fonctions retournent NULL si l’un des opérandes ou arguments de SqlTypes est NULL. La propriété IsNull retourne toujours une valeur true ou false.

Precision

Les types de données décimaux dans le CLR .NET Framework ont des valeurs maximales différentes de celles des types de données numériques et décimaux dans SQL Server. En outre, dans les types de données décimaux .NET Framework CLR, supposons la précision maximale. Dans le CLR pour SQL Server, toutefois, SqlDecimal fournit la même précision et mise à l’échelle maximales, et la même sémantique que le type de données décimal dans SQL Server.

Détection de dépassement de capacité

Dans le CLR .NET Framework, l’ajout de deux nombres très volumineux peut ne pas lever d’exception. Au lieu de cela, si aucun opérateur de contrôle n'a été utilisé, le résultat retourné peut être « enveloppé » en tant qu'entier négatif. Dans System.Data.SqlTypes, les exceptions sont levées pour toutes les erreurs de dépassement de capacité et de sous-flux, et les erreurs de division par zéro.

Voir aussi

Types de données SQL Server dans .NET Framework