2012-01-13 71 views
0

我試圖查詢的表中有一個表格的類型爲decimal(38,19)。我需要將它轉換爲varchar才能讓我的perl DBI模塊處理。我應該如何在SQL中編寫轉換才能使其工作?特別是,如果我在SQL Server Management Studio中運行以下命令:將長十進制或浮點數轉換爲SQL Server中的varchar

select convert(varchar, 19040220000.0000000000000000000) 

我得到:

消息8115,級別16,狀態5,行1個
算術溢出錯誤轉換數字數據類型爲varchar 。

我試圖讓第一數量:

select convert(varchar, round(19040220000.0000000000000000000, 0)) 

但是這似乎並沒有工作,要麼(同樣的錯誤消息)。實際上round()似乎並沒有因爲某些原因而對該數字產生影響。我該怎麼辦?謝謝。

+0

難道你需要設置一個長度爲VARCHAR即,使用varchar(64)? – 2012-01-13 15:50:27

回答

4

如果不指定您的varchar,則默認爲30個字符CONVERT操作的情況下的長度。

這不足以保存38位十進制數。因此,在CONVERT聲明中給出您的varchar合適的長度!

試試這個:

select convert(varchar(40), 19040220000.0000000000000000000) 
0

您需要使用VARCHAR一組長度比你想要的精確度較大,即

select convert(varchar(64), 19040220000.0000000000000000000) 
相關問題