2012-03-24 107 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值?也许小数或浮点数是更好的解决方案