Null 허용 여부 및 3개의 값 논리 비교

적용 대상:SQL Server

SQL Server 데이터 형식에 익숙한 경우 .NET Framework의 System.Data.SqlTypes 네임스페이스에서 비슷한 의미 체계와 정밀도를 찾을 수 있습니다. 그러나 몇 가지 차이점이 있으며, 이 항목에서는 이러한 차이점 중 가장 중요한 부분을 다룹니다.

NULL 값

네이티브 CLR(공용 언어 런타임) 데이터 형식과 SQL Server 데이터 형식 간의 주요 차이점은 전자가 NULL 값을 허용하지 않는 반면 후자는 전체 NULL 의미 체계를 제공한다는 점입니다.

비교는 NULL 값의 영향을 받습니다. x와 y의 두 값을 비교할 때 x 또는 y가 NULL인 경우 일부 논리적 비교는 true 또는 false가 아닌 UNKNOWN 값으로 평가됩니다.

SqlBoolean 데이터 형식

System.Data.SqlTypes 네임스페이스는 이 3개 값 논리를 나타내는 SqlBoolean 형식을 도입했습니다. SqlType 간의 비교는 SqlBoolean 값 형식을 반환합니다. UNKNOWN 값은 SqlBoolean 형식의 null 값으로 표시됩니다. IsTrue, IsFalseIsNull 속성은 SqlBoolean 형식의 값을 검사 위해 제공됩니다.

연산, 함수 및 NULL 값

모든 산술 연산자(+, -, *, /, %), 비트 연산자(~, &, |) 및 대부분의 함수는 SqlType의 피연산자 또는 인수 가 NULL인 경우 NULL을 반환합니다 . IsNull 속성은 항상 true 또는 false 값을 반환합니다.

정밀도

.NET Framework CLR의 10진수 데이터 형식은 SQL Server의 숫자 및 소수 데이터 형식과 다른 최대값을 가짐 또한 .NET Framework CLR 10진수 데이터 형식에서는 최대 정밀도를 가정합니다. 그러나 SQL Server용 CLR에서 SqlDecimal 은 SQL Server의 10진수 데이터 형식과 동일한 최대 정밀도 및 배율과 동일한 의미 체계를 제공합니다.

오버플로 검색

.NET Framework CLR에서 두 개의 매우 큰 숫자를 추가해도 예외가 throw되지 않을 수 있습니다. 대신 검사 연산자를 사용하지 않은 경우 반환된 결과는 음수 정수로 "래핑"될 수 있습니다. System.Data.SqlTypes에서는 모든 오버플로 및 언더플로 오류 및 0으로 나누기 오류에 대해 예외가 throw됩니다.

참고 항목

.NET Framework의 SQL Server 데이터 형식