2012-03-24 106 views
0

我試圖執行以下查詢數據類型轉換

select distinct pincode as Pincode,CAST(Date_val as DATE) as Date, 
SUM(cast(megh_38 as int)) as 'Postage Realized in Cash', 
SUM(cast(megh_39 as int)) as 'MO Commission', 
from dbo.arrow_dtp_upg 
group by pincode,Date_Val 

但我得到一個錯誤「的轉換轉換爲nvarchar值'82 0.25' 爲int數據類型時失敗了。」

我使用了錯誤的數據類型嗎?

回答

1

字符串「82.25」表示浮點數(或小數點)不是整數,因此如果需要浮點數,則使用cast(megh_38 as float)

如果您只需要整數部分,則使用floor(cast(megh_38 as float))

+0

謝謝你回答我嘗試使用浮動,但我越來越 '錯誤轉換數據類型nvarchar浮動。 警告:空值由集合或其他SET操作消除。作爲錯誤。 – user87 2012-03-24 18:19:35

+0

其中一個值爲NULL。如果你想把它當作零,那麼使用'coalesce(floor(cast(megh_38 as float)),0)'。 – Phil 2012-03-24 18:36:58

0

你可以試試這個:

cast(megh_38 as decimal(10,2)) 
cast(megh_39 as decimal(10,2)) 
0

一個可能的問題是分隔符(點VS逗號)。 問題 - 爲什麼你更喜歡nvarchar存儲float或int值?也許小數或浮點數是更好的解決方案