programing tip

SQL Server가 서명되지 않은 데이터 형식을 지원하지 않는 이유는 무엇입니까?

itbloger 2020. 10. 19. 07:49
반응형

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

반응형