2012-05-05 3 views
0

정밀도가 9 인 십진수로 데이터베이스에 저장된 두 개의 숫자가 있습니다.이 두 숫자를 추가하고 데이터베이스의 값을 업데이트하는 것입니다. 내가이 SQL에 추가 할 때결과로 10 진수를 더하는 SQL : 숫자 형 데이터를 숫자로 변환하는 산술 오버플로 오류

DECLARE @v1 DECIMAL(9, 5), @v2 DECIMAL(9, 5) 
SET @v1 = 9503.34000 
SET @v2 = 1357.62000 
SELECT CAST(@v1 + @v2 AS DECIMAL(9, 5)) 

는 그것이 10860.96000 결과 10.5로 변경에 그러나 오버플로 오류가 발생합니다.

내가 원하는 정밀도에 따라 결과를 추가하고 반환하도록 SQL에 지시 할 수 있습니까? 나는이 합계가 9,5 NOT 10,5를 돌려 주길 바란다.

+2

합계의 값이 10'000 이상이므로 ** 'DECIMAL (9,5)'이 될 수 없습니다.이 숫자는 총 9 자리의 십진수이며 그 중 5 자리는 소수점 뒤에. 소수점 앞에 4 자리 *를 남겨 둡니다. 이는 결과를 보유하기에는 불충분합니다 **. –

+0

Marc에게 감사드립니다. 디자인을 변경해야한다는 것을 깨달았습니다. – Signcodeindie

답변

3

으로 돌아올 수 없습니다. DECIMAL(9,5)입니다. 9,503 + 1,357이 10,000보다 큰 소수 자리 앞에 5 자리 숫자가 있습니다.

총 9 자리 만 사용하려는 경우 CAST(@v1 [email protected] as DECIMAL(10,4))을 사용하십시오. 어쨌든 다섯 번째 소수 자릿수를 사용하는 것 같지 않습니다.

+0

감사합니다. – Signcodeindie

관련 문제