2011-09-12 53 views
0

我在sql server 2008 exp r2中聲明瞭一個數值爲(5,3)的列,並且我假定它允許我保存12345.123這樣的值,但是當我嘗試輸入大於100的任何東西都會導致溢出錯誤。它讓我相信在數字(5,3)中,5代表包括精度和尺度的數字總長度。考慮到這一點,我將列的類型更改爲十進制(9,3),並假定它允許我輸入123456.123等值,但它又會產生溢出錯誤。我無法理解這個數據類型及其精度和範圍如何被sql server解釋。
更新:
奇怪的是,當插入數值數字(9,3)只允許輸入值如1234.123,但編輯行時,我可以輸入值123456.123。不知道這裏發生了什麼:(數據類型在SQL Server Express中的精確度和比例2008 R2

+1

RE:更新,你如何做插入?你有任何觸發器在桌子上? –

+0

啊是的,我確實有插入觸發器,讓我檢查它是否產生問題 –

回答

4

decimal(9,3)應該工作的優良123456.123請重新檢查!

執行

declare @d decimal(9,3) = 123456.123 

沒有給出錯誤。此數據類型允許6個位數小數點左邊和3右邊

+0

PLZ查看更新的問題。有沒有機會,我有安裝SQL Server的一些問題。此外,我的假設是,9是精度和比例的總和,是正確的還是這9比例和3精度? –

+0

@Muhammad - 問題更可能出現在您的「INSERT」代碼或插入觸發器中。請告訴我們你是如何插入它,如果你有任何觸發器。 [精度是一個數字中的位數。比例是數字中小數點右側的位數。例如,數字123.45的精度爲5,刻度爲2.](http://msdn.microsoft.com/en-us/library/ms190476.aspx) –

+0

感謝Martin,問題出在觸發器 –

相關問題