Freigeben über


Zulässigkeit von NULL-Werten und Vergleiche mit dreiwertiger Logik

Gilt für: SQL Server

Wenn Sie mit den SQL Server-Datentypen vertraut sind, finden Sie ähnliche Semantik und Genauigkeit im System.Data.SqlTypes-Namespace im .NET Framework. Es gibt jedoch einige Unterschiede, und die wichtigsten dieser Unterschiede werden in diesem Thema behandelt.

NULL-Werte

Ein Hauptunterschied zwischen Datentypen der nativen Common Language Runtime (CLR) und SQL Server-Datentypen besteht darin, dass der frühere Datentyp keine NULL-Werte zulässt, während letztere vollständige NULL-Semantik bereitstellen.

Vergleiche werden durch NULL-Werte beeinflusst. Wenn die beiden Werte x und y verglichen werden und x oder y NULL ist, dann ergeben einige logische Vergleiche den Wert UNKNOWN statt true oder false.

SqlBoolean-Datentyp

Zur Darstellung dieser dreiwertigen Logik wurde im System.Data.SqlTypes -Namespace der SqlBoolean -Typ eingeführt. Vergleiche zwischen beliebigen Werten des Typs SqlTypes ergeben einen Wert des SqlBoolean -Typs. Der UNKNOWN-Wert wird durch den NULL-Wert des SqlBoolean -Typs dargestellt. Die Eigenschaften IsTrue, IsFalseund IsNull dienen zur Überprüfung des Werts eines SqlBoolean -Typs.

Vorgänge, Funktionen und NULL-Werte

Alle arithmetischen Operatoren (+, -, *, /, %), bitweise Operatoren (~, &, und |) und die meisten Funktionen geben NULL zurück, wenn eines der Operanden oder Argumente von SqlTypes NULL ist. Die IsNull -Eigenschaft gibt stets den Wert true oder false zurück.

Präzision

Dezimaldatentypen in .NET Framework CLR weisen unterschiedliche Höchstwerte auf als die numerischen und dezimalen Datentypen in SQL Server. Darüber hinaus wird in den .NET Framework CLR-Dezimaldatentypen die maximale Genauigkeit vorausgesetzt. In der CLR für SQL Server bietet SqlDecimal jedoch die gleiche maximale Genauigkeit und Skalierung sowie die gleiche Semantik wie der Dezimaldatentyp in SQL Server.

Überlauferkennung

In .NET Framework CLR löst das Hinzufügen von zwei sehr großen Zahlen möglicherweise keine Ausnahme aus. Wenn kein Prüfvorgang verwendet wurde, dann wird das zurückgegebene Ergebnis möglicherweise als negative Ganzzahl dargestellt. In System.Data.SqlTypeswerden Ausnahmen für alle Überlauf- und Unterlauffehler sowie Fehler aufgrund einer Division durch 0 ausgelöst.

Weitere Informationen

SQL Server-Datentypen in .NET Framework