在 varchar 字段上使用 SQL 服务器算术运算符

Using SQL Server Arithmetic Operators on varchar Field

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

该语句产生以下示例结果:

SELECT 
    AverageCost
FROM 
    dbo.inventory

此声明:

SELECT 
    AverageCost * 2.3 AS Price
FROM 
    dbo.iteminventory

产生这个错误

Arithmetic overflow error converting data type numeric

将下面的语句写成小数不会产生任何错误,但是在这个语句中添加算术运算符却让我望而却步,我的尝试都导致了错误。

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

在此先感谢您的帮助。

如果 2012+ 使用 Try_Convert()

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

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

Returns

Price
388.7
74.75
127.075
19.366
678.5
0
7.666659

查看可能导致转换错误的值

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