2014-01-21 30 views
0

我有我相信它是一個非常愚蠢的問題,但這是讓我慢慢痛苦的,我做了一些研究,爲什麼會發生這種情況,讓我無能爲力。自動收集SQL Server問題

我在SQL Server 2008 R2的一個簡單的表格,它包括:

id int; 
name varchar 50; 
price decimal(18,0) 

問題是每一次我要插入或更新的時間和值是小數,每說12.5,我插入後它會自動將數據庫中的數據輪到我13個。如果我輸入12,5,它會將它變成125.如果我將這些數字存儲爲小數,爲什麼會發生這種情況?我知道它可能是一個愚蠢的答案,但在我缺乏數據庫經驗和我花時間鎖定答案的時間之間,我相信我需要一些幫助。 THX先進

+0

只是爲了澄清...你問如何做SQL Server在這些情況下返回錯誤? –

+0

對於12,5場景,decimal數據類型不遵守區域設置。它會將所有數字存儲爲'。'。您必須轉換爲SSMS字符串才能顯示十進制數字,''' – TTeeple

回答

3

如果定義decimal是18位的一切,這小數點後零 - 你能指望什麼???

你需要給小數點後小數點後的小數點

使用類似

decimal(18,2) 

或任何你需要

瞭解更多關於decimal數據類型以及如何使用它MSDN SQL Server Books Online

+0

令人難以置信的是,文檔中的thx。我會確保閱讀它。 :S – user2793090