フィールドコストに値があります0.987878656435798654
、0.765656787898767
これはどのようなデータ型になるかを調べようとしています。小数値フィールドの算術オーバーフローエラー
私はdecimal 15,15
を与え、それが誤り
算術オーバーフローエラーがデータ型の数値にvarchar型を変換する私を投げているデータをロードしようとしています。
フィールドコストに値があります0.987878656435798654
、0.765656787898767
これはどのようなデータ型になるかを調べようとしています。小数値フィールドの算術オーバーフローエラー
私はdecimal 15,15
を与え、それが誤り
算術オーバーフローエラーがデータ型の数値にvarchar型を変換する私を投げているデータをロードしようとしています。
問題は、の数値にの10進数の前に任意の長さを割り当てていないことです。
DECIMAL (15, 15)
は、小数点以下15桁の精度を持ちますが、合計15桁の余裕があることを意味します。したがって、1
より大きい値の余裕はありません。 -0.999999999999999
0.999999999999999
(10進数の後に15桁):
これはDECIMAL (15, 15)
のみ以下の範囲の値をサポートすることを意味します。
あなたはあなたの最初の例では18
数字を持っているので、範囲内の値をサポートしています私はDECIMAL (21, 18)
DECIMAL (21, 18)
ようなものを使用することをお勧めします:-999.999999999999999999
999.999999999999999999
へ(小数点以下18桁)。
しかし、自分のデータを分析して、サポートする必要がある最大値を確認する必要があります。
SELECT CONVERT(DECIMAL(X,X-1),YourColumn)
...彼らは1を下回るたびにされている場合は、これを試して、その後
SELECT LEN(YourColumn)
FROM YourTable
...これを試してみてください。 X-1はそれより1小さい。
覚えておいてください、それはDECIMAL(TotalLength,Precision)
なので、合計値に十分なスペースがあることを確認する必要があります。
ありがとうSiyual。出来た。 – swathi
小数点以下の桁数を特に必要としない限り、10桁から19桁のフィールドで9バイトを使用し、20から28までは13を使用するので、 'DECIMAL(28,25)'を使用できます例)、同じ量の記憶域バイト(ソース:https://msdn.microsoft.com/en-us/library/ms187746.aspx)でより高い精度を得ることができます。お金の種類を使用することを検討することもできます:https://msdn.microsoft.com/en-us/library/ms179882.aspx、それはわずか4桁の10桁しかありません(通常、場合)。 – Andrew
フィールド内のデータのMy Lenは14 13ですが、それでもエラーが発生します。私は何が間違っているのか分かりません。 助けてください? – swathi