Programing

SQL Server에서 int를 데이터 형식 숫자로 변환하는 산술 오버플로 오류가 발생하는 이유는 무엇입니까?

lottogame 2020. 11. 13. 07:45
반응형

SQL Server에서 int를 데이터 형식 숫자로 변환하는 산술 오버플로 오류가 발생하는 이유는 무엇입니까?


이 코드를 실행할 때 SQL Server Management Studio 에서 오류가 발생 합니다.

declare @percentage numeric(3,2)
set @percentage = cast(15 as numeric(3,2))

하지만 숫자 선언을 다음과 같이 변경하면

declare @percentage numeric(4,2)
set @percentage = cast(15 as numeric(4,2))

모든 것이 잘됩니다.

숫자 데이터 유형에 제한이 있습니까?


숫자는 총 자릿수를 정의한 다음 소수점 이하 숫자를 정의합니다.

숫자 (3,2)는 9.99까지만 저장할 수 있습니다.


숫자 (3,2)를 보겠습니다. 즉, 데이터를위한 3 자리가 있고 그중 2 자리는 소수점 오른쪽에 있고 소수점 왼쪽에는 1 자리 만 남습니다. 15는 소수점 왼쪽에 두 자리가 있습니다. BTW 값이 100이면 숫자 (5, 2)로 늘릴 것입니다.


NUMERIC(3,2)의미 : 총 3 자리, 소수점 뒤 2 자리. 따라서 소수점 앞에 하나의 소수점 만 있습니다.

시도하십시오 NUMERIC(5,2)-소수점 앞 세 개, 소수점 뒤 두 개.


정밀도와 규모는 종종 오해를받습니다. numeric (3,2)에서는 전체적으로 3 자리를 원하지만 소수점 오른쪽에 2 자리를 원합니다. 15 => 15.00을 원하면 선행 1이 오버플로를 일으 킵니다 (소수점 오른쪽에 2 자리를 원하면 왼쪽에 한 자리 만 더 들어갈 수 있기 때문입니다). 4,2에서는 4 자리 숫자가 모두 맞기 때문에 문제가 없습니다.

참고 URL : https://stackoverflow.com/questions/2059134/why-sql-server-throws-arithmetic-overflow-error-converting-int-to-data-type-nume

반응형