2011-11-02 169 views
3

我有一列聲明爲十進制(4,4)。目前它存儲0.0400作爲值。現在我需要更新從0.0400存儲到9.95.I採用以下方式查詢值:在SQL Server 2008中使用decimal數據類型遇到算術溢出錯誤

Update <tablename> 
set <columnname>= 9.95 
where <condition> 

當我嘗試執行,我得到以下錯誤: 算術溢出錯誤轉換數字數據類型的數字。 該聲明已被終止。

請幫忙。

回答

1

如果你寫decimal(4,4),什麼數據庫聽到的是:

  • 有四位總
  • 4人全部都是小數點後面

所以一個decimal(4,4)可以存儲範圍0.00000.9999(及其負面等值)。但是9.95超出該範圍,所以它會返回一個錯誤。

3

定義列decimal(4,4)是說

我將有4位總,其中4來小數點

爲了表示9.95後相當於,你需要將其存儲爲9.9500以滿足'小數點後4位'的條件。但是這現在超過了'最大4位數'的條件,所以不能轉換。

您至少需要decimal(5, 4)以這種方式存儲9.95作爲小數。

1

幾年前我有類似的問題,這裏是我的理解。

十進制(TotalDigitsIncludingDecimal,小數位數)

例如:值= 50.05聲明十進制(4,2) 例如:值= 5000.0005聲明十進制(8,4)

相關問題