2016-09-16 76 views
0

我有一個字段成本值0.987878656435798654,0.765656787898767 我想弄清楚這是什麼數據類型。小數字段上的算術溢出錯誤

當我給decimal 15,15並試圖加載它扔我一個錯誤

算術溢出錯誤轉換VARCHAR數據類型的數字數據。

回答

2

問題是你沒有分配任何長度到的值之前的小數點。

DECIMAL (15, 15)意味着它在小數點後的精度爲15位數,但只有足夠的空間用於總計15位數 - 因此不會超過1的值。

這意味着DECIMAL (15, 15)只支持在以下範圍內的值: -0.9999999999999990.999999999999999(小數點後15位)。

您的第一個例子18數字,所以我會建議使用像DECIMAL (21, 18)

DECIMAL (21, 18)東西將支持範圍值:-999.999999999999999999999.999999999999999999(小數點後18位數字)。

但是,您應該分析自己的數據,看看您需要支持的最大值。

+0

謝謝你Siyual。有效。 – swathi

+0

除非你不需要更多的小數,記住從10到19位數,該字段使用9個字節,從20到28它使用13,所以你可以使用'DECIMAL(28,25)'(for例如),使用相同數量的存儲字節獲得更高精度(來源:https://msdn.microsoft.com/en-us/library/ms187746.aspx)。您也可以考慮使用金錢類型:https://msdn.microsoft.com/en-us/library/ms179882.aspx,雖然它只有4位小數位(通常綽綽有餘,可能不是您的案件)。 – Andrew

+0

我的字段中的數據長度是14 13我仍然得到該錯誤。我不確定我做錯了什麼。 請幫忙嗎? – swathi

0

嘗試......

SELECT LEN(YourColumn) 
FROM YourTable 

然後,如果它們低於1每一次,試試這個...

SELECT CONVERT(DECIMAL(X,X-1),YourColumn) 

其中X是什麼在LEN語句返回。而X-1比那少了一個。

請記住,它是DECIMAL(TotalLength,Precision)所以你需要確保有足夠的空間來獲得總價值。

相關問題