2016-06-22 43 views
2

我試圖在數據庫中添加另一個小數點,並且在Microsoft SQL Server Management Studio(2014)中不斷收到此錯誤。該列當前是數字(9,2)NULL,我想將其更改爲數字(9,3)NULL。無論是通過代碼還是設計者,它都不會允許我這樣做。將數字(9,2)轉換爲數字(9,3)時的算術溢出錯誤

ALTER TABLE LOG ALTER COLUMN WEIGHT numeric(9, 3) NULL 

-- Arithmetic overflow error converting numeric to data type numeric. 

閱讀了幾個線程後,我沒有設法找到這個問題的答案。由於我只是讓這個領域變得更大,所以在理論上應該沒有截斷問題或類似問題。

表中最大值爲1102439.00,最小值爲0.00。不是一個NULL。

+3

因爲你最大的值長度爲'9'和你想它的規模定義爲'3 '這是它的長度爲'10'數字,爲了避免這種情況嘗試定義NUMERIC(10,3),這可以解決你的問題 –

+1

@JaydipJ這實際上解決了我的問題。 – Danieboy

+0

爲了提供更多關於解決方案的信息:您不是讓字段更大,而只是移動小數點。任何9位數字都會失敗,例如1102439.00,因爲這將需要是1024位長度的1102439.000。 –

回答

1

因爲你最大的值長度爲9,你正在嘗試規模定義將3這使得其長度未安裝在NUMERIC(9,3) 10位,

由於NUMERIC(P,S)其中,

  • P是精度顯示總位數的數字

  • S是標度,表示tot小數

後位數人來避免這種情況嘗試定義NUMERIC(10,3),這可能會解決您的問題

1
  1. 當已經把它定義爲NUMERIC(10,3),其等同於DECIMAL(10,3),您使用的精度p在正在佔用9個字節的範圍內10-19(https://msdn.microsoft.com/en-us/library/ms187746.aspx )。改爲使用DECIMAL(19,3),以便您可以獲得列的相同存儲的最大值。
相關問題