SQL Server가 서명되지 않은 데이터 형식을 지원하지 않는 이유는 무엇입니까?
나는 특별히 unsigned에 대해 생각하고 int
있습니다.
다음은 실제 예입니다. ID 열이 최대 값을 초과하면 무엇을합니까? 이동 BigInt
(4 대신 8 바이트 저장)하거나 음의 정수를 지원하도록 응용 프로그램을 리팩터링 하고이 답변에 표시된대로 자체 규칙을 만들 수도 있습니다 . 두 옵션 모두 최적이 아닙니다.
UInt
이상적인 솔루션이지만 SQL Server는이를 제공하지 않습니다 (MySQL이 제공하는 경우).
서명되지 않은 데이터 유형은 SQL 표준 (SQL-2003)의 일부가 아니지만 여전히 저에게 낭비 인 것처럼 보입니다.
이러한 항목을 포함하지 않은 이유는 무엇입니까 (SQL Server 또는 표준에 포함)?
추측해야한다면 유형의 확산을 피하기 위해 노력하고 있다고 말할 수 있습니다. 일반적으로 말하면 부호없는 정수가 할 수있는 것 중 부호있는 정수가 할 수없는 것은 없습니다. 2147483648에서 4294967296 사이의 숫자가 필요한 경우에는 숫자가 결국 4294967296을 초과하므로 8 바이트 정수로 이동해야합니다.
이를 위해 -2,147,483,648을 시드 값으로 사용할 수 있습니다.
Identity(-2147483648, 1)
Microsoft Connect 에서 비슷한 질문 을 찾았습니다 .
Jim Hogg (프로그램 관리자)의 답변에는 서명되지 않은 int를 추가하는 것에 대한 장단점이 있습니다. 가장 큰 단점은 암시 적 형식 변환을 구현하는 규칙이 제대로 작동하는 데 악몽이된다는 것입니다.
요청이 "Wo n't Fix"로 종료되었습니다.
참고 URL : https://stackoverflow.com/questions/4451967/why-doesnt-sql-server-support-unsigned-datatype
'programing tip' 카테고리의 다른 글
웹 앱 개발에 Ionic Framework를 사용하는 방법은 무엇입니까? (0) | 2020.10.20 |
---|---|
SQL Server XML 데이터 형식에서 LIKE 문 사용 (0) | 2020.10.19 |
ASP.NET CLR이 활성화되지 않음 (0) | 2020.10.19 |
CSV 리더 (Python)의 "줄에 NULL 바이트 포함" (0) | 2020.10.19 |
문자열에서 웹 작업자를 만드는 방법 (0) | 2020.10.19 |