2011-11-16 7 views
3

これはおそらく新しい質問ですが、私はSQSHのデータベースで作業していましたが、大規模な(人口属性)整数型の値を持っていました。これらを合計したいとき、私は算術オーバーフローの例外があります。次に、値を小数点にキャストし、すべてが正常に機能しました(オーバーフローなし)。しかし、私が読んだところでは、IntegerとDecimalは同じことだと言われています。それでなぜこれが起こっているのですか?あなたがintデータ型の最大限界値よりも大きく、精度とスケールとのdecimalデータ型を持っている必要があり、事前SQLサーバーの整数と10進数のSUM

+0

INTとDECIMALはどのような意味でも同じではありません。あなたが何を読んでいるのか分かりません。ここから始めてみてください... http://msdn.microsoft.com/en-us/library/aa258271%28v=sql.80%29.aspx – MatBailie

+0

ありがとうございました! – Cemre

答えて

4

整数型は、2,147,483,647にもなる可能性のある4バイトの数値です。小数は実質的に高くなる可能性があります。どちらも整数として格納されますが、小数点は小数点以下の桁を表す値を許可します。整数の代わりにBIGINT(9,223,372,036,854,775,807)を使用することもできます。

3

感謝。例えば、decimal(18, 0)は、int(これは、2147483647の先頭です)より大きい容量を持ちます。

与えられたintは4バイトしか占めず、decimal(18, 0)のようなものでより多くのスペースを消費することはできません。しかしそれはあなたに最大限の制限を受けるでしょうint

2

オンラインブック

decimal and numeric

小数[(P [S])]と数字[(P [S])]固定精度と スケール番号から。 10^38 +1 10^38を介して - - 1

int, bigint, smallint, and tinyint

4バイトの長さを有し、格納番号-2147483648から最大精度が使用される場合、有効値はあり から2,147,483,647まで。

したがって、DecimalはIntよりもはるかに大きな値を格納できます。