2017-04-05 147 views
1

我有第三方数据源,其中包含仅包含数字的varchar(255)列。此栏是一个项目的成本。我希望能够将该列乘以因子(2.3)以获得默认销售价格,但我无法对varchar列应用算术运算符,并且当与算术运算符结合使用时,CAST函数会产生错误。在varchar字段上使用SQL Server算术运算符

此语句产生以下示例的结果:

SELECT 
    AverageCost 
FROM 
    dbo.inventory 
  • 32.5
  • 55.25
  • 8.42
  • 3.33333

这satatement:

SELECT 
    AverageCost * 2.3 AS Price 
FROM 
    dbo.iteminventory 

生成此错误

算术溢出错误转换数据类型数值

编写声明如下投作为小数不产生错误,但将算术运算符添加到此语句中已经避开了我,我的企图哈哈都导致了错误。

SELECT 
    CAST(AverageCost AS Decimal(10, 2)) AS Price 
FROM 
    dbo.inventory 

在此先感谢您的帮助。

回答

1

如果2012+使用Try_Convert()

Try_Convert()将捕获任何转换错误为NULL

SELECT try_convert(float,AverageCost) * 2.3 AS Price 
FROM dbo.inventory 

返回

Price 
388.7 
74.75 
127.075 
19.366 
678.5 
0 
7.666659 

要查看其值可能导致转换错误

Select * 
From iteminventory 
Where try_convert(float,AverageCost) is null 
+0

谢谢约翰,那工作完美。 –

+0

@ B.L。乐于帮助 –