これはおそらく新しい質問ですが、私はSQSHのデータベースで作業していましたが、大規模な(人口属性)整数型の値を持っていました。これらを合計したいとき、私は算術オーバーフローの例外があります。次に、値を小数点にキャストし、すべてが正常に機能しました(オーバーフローなし)。しかし、私が読んだところでは、IntegerとDecimalは同じことだと言われています。それでなぜこれが起こっているのですか?あなたがint
データ型の最大限界値よりも大きく、精度とスケールとのdecimal
データ型を持っている必要があり、事前SQLサーバーの整数と10進数のSUM
3
A
答えて
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
オンラインブック
小数[(P [S])]と数字[(P [S])]固定精度と スケール番号から。 10^38 +1 10^38を介して - - 1
int, bigint, smallint, and tinyint
4バイトの長さを有し、格納番号-2147483648から最大精度が使用される場合、有効値はあり から2,147,483,647まで。
したがって、DecimalはIntよりもはるかに大きな値を格納できます。
関連する問題
INTとDECIMALはどのような意味でも同じではありません。あなたが何を読んでいるのか分かりません。ここから始めてみてください... http://msdn.microsoft.com/en-us/library/aa258271%28v=sql.80%29.aspx – MatBailie
ありがとうございました! – Cemre