2012-05-05 5 views
0

データベースに格納される2つの数値は、精度が9に等しい10進数として格納されます。この2つの数値を加算してデータベースの値を更新します。SQLに10進数を加算すると、算術オーバーフローエラーが発生します。数字をデータ型数値に変換します。

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)) 

私はSQLでこれを追加すると、それはそれは 10860.96000になり10,5にそれを変更するにはしかし、オーバーフローエラーがスローされます。

どのように私はSQLに、結果を追加して返すようにしたいのですか?私はこの合計が私に9,5 NOT 10,5を返すようにしたい。

+2

あなたの合計の値が10'000を超えているため、** DECIMAL(9,5)にすることはできません - これは10進数で合計9桁で、そのうち5つは小数点の後に。小数点の前に4桁の数字が残っています。これはあなたの結果を保持するには不十分です**。 –

+0

marcさん、ありがとう、私はデザインを変更する必要があることを認識しました – Signcodeindie

答えて

3

は、に戻ることができません。DECIMAL(9,5)です。小数点の前に5桁あります.9,503 + 1,357は10,000よりも大きいためです。

合計9桁のみを使用する場合は、CAST(@v1 [email protected] as DECIMAL(10,4))を使用してください。あなたはとにかく小数点第5位を使用していないようです。

+0

ありがとう、それは役立ちます。 – Signcodeindie

関連する問題