これはおそらく新しい質問ですが...私はSQSHのデータベースで作業していて、整数型の値が大きかった(人口属性)。これらを合計したいときに、算術オーバーフローの例外が発生しました。次に、値をDecimalにキャストすると、すべてが正常に機能しました(オーバーフローなし)。しかし、私が読んだところはどこでも、整数と小数は同じものだと言っています。では、なぜこれが起こっているのでしょうか?
前もって感謝します
これはおそらく新しい質問ですが...私はSQSHのデータベースで作業していて、整数型の値が大きかった(人口属性)。これらを合計したいときに、算術オーバーフローの例外が発生しました。次に、値をDecimalにキャストすると、すべてが正常に機能しました(オーバーフローなし)。しかし、私が読んだところはどこでも、整数と小数は同じものだと言っています。では、なぜこれが起こっているのでしょうか?
前もって感謝します
整数型は、2,147,483,647までの4バイトの数値です。小数は大幅に高くなる可能性があります。どちらも整数として格納されますが、小数点を使用すると、値で小数点以下の桁を表すことができます。整数の代わりにBIGINT(9,223,372,036,854,775,807)を使用することもできます。
decimalデータ型の最大制限よりも大きい精度とスケールのデータ型がありintます。たとえば、decimal(18, 0)容量はint(で最大になります2147483647)よりも大きくなります。
確かに、int4バイトしか使用せず、のようなものでより多くのスペース消費を回避することはできませんdecimal(18, 0)。しかし、それはあなたに最大の限界を超えさせるでしょうint。
BooksOnLineから
10進数[(p [、s])]および数値[(p [、s])]精度とスケール数を修正しました。最大精度を使用する場合、有効な値は-10 ^38+1から10^38-1までです。
int、bigint、smallint、およびtinyint
長さは4バイトで、-2,147,483,648から2,147,483,647までの数値を格納します。
したがって、DecimalはIntよりもはるかに大きな値を格納できます。