다음을 통해 공유


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

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 형식을 제공합니다. SqlTypes 간을 비교하면 SqlBoolean 값 형식이 반환됩니다. UNKNOWN 값은 SqlBoolean 형식의 null 값으로 표현됩니다. SqlBoolean 형식의 값을 확인하기 위해 IsTrue, IsFalse 및 IsNull 속성이 제공됩니다.

연산, 함수 및 NULL 값

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

전체 자릿수

.NET Framework CLR의 decimal 데이터 형식에는 SQL Server의 숫자 및 decimal 데이터 형식의 최대값과는 다른 최대값이 있습니다. 또한 .NET Framework CLR decimal 데이터 형식에는 최대 전체 자릿수가 있는 것으로 간주됩니다. 그러나 SQL Server용 CLR의 SqlDecimal은 SQL Server의 decimal 데이터 형식과 동일한 전체 자릿수, 소수 자릿수 및 의미 체계를 제공합니다.

오버플로 검색

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

참고 항목

관련 자료