在varchar字段上使用SQL Server算术运算符

时间:2017-04-05 20:46:35

标签: sql sql-server tsql casting arithmetic-expressions

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

此语句产生以下样本结果:

SELECT 
    AverageCost
FROM 
    dbo.inventory
  • 169
  • 32.5
  • 55.25
  • 8.42
  • 295
  • 0
  • 3.33333

这个声明:

SELECT 
    AverageCost * 2.3 AS Price
FROM 
    dbo.iteminventory

产生此错误

  

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

将如下语句编写为十进制语句不会产生错误,但是在此语句中添加算术运算符已经躲过了我,我的尝试都导致了错误。

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

先谢谢你的帮助。

1 个答案:

答案 0 :(得分: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