Udostępnij za pośrednictwem


Nullability i porównań logicznych trzy wartości

Jeśli znasz SQL Server typów danych można znaleźć podobne semantyka i precyzji w System.Data.SqlTypes obszar nazw w .NET Framework.Istnieją pewne różnice, jednak i w tym temacie omówiono najważniejsze tych różnic.

Wartości NULL

Podstawowa różnica między macierzystym language runtime (CLR) typowych danych i SQL Server typów danych jest, że Byłej nie pozwalają na wartości NULL, podczas gdy te ostatnie zapewniają pełną wartość NULL semantyka.

Dotyczy porównań wartości NULL.Podczas porównywania dwóch wartości x i y, jeśli x lub y jest NULL, niektóre porównań logicznych oceny Nieznana wartość zamiast wartość true lub false.

Typ danych SqlBoolean

System.Data.SqlTypes Wprowadzono nazw SqlBoolean typu do reprezentacji tej logiki wartość 3.Porównania między dowolnym SqlTypes zwrotu SqlBoolean typu wartości.Nieznana wartość jest reprezentowana przez wartość null SqlBoolean typu.Właściwości IsTrue, IsFalse, i IsNull są dostarczane do sprawdzenia wartości SqlBoolean typu.

Operacje, funkcje i wartości NULL

Wszystkie operatory arytmetyczne (+, -, *, %), operatory bitowe (~, &, i |), a większość funkcji zwrócona wartość NULL, jeśli operandy lub argumenty SqlTypes są wartości NULL.IsNull Właściwość zawsze zwraca wartość PRAWDA lub FAŁSZ, wartości.

Precision

Typy danych dziesiętne w .NET Framework CLR mają różne wartości maksymalnej niż te typy danych liczbowych i dziesiętne w SQL Server.Ponadto w .NET Framework typów danych decimal CLR założono maksymalnej precyzji.W CLR dla SQL Server, jednak SqlDecimal zawiera maksymalna samą dokładność i skala i samego semantyka jako typ danych dziesiętny w SQL Server.

Wykrywanie przepełnienia

W .NET Framework nie może zgłaszać CLR dodanie dwóch liczb bardzo dużych wyjątek.Zamiast tego Jeśli żaden operator wyboru został użyty, zwracany wynik może "otacza" całkowitą ujemną.W System.Data.SqlTypes, wyjątki generowane są dla wszystkich przepełnienia i niedomiar błędy i błędy dzielenia przez zero.