我有第三方数据源,其varchar(255)
列仅包含数字。此列是项目的成本。我希望能够将此列乘以因子(2.3)以获得默认销售价格,但我无法在varchar
列上应用算术运算符,并且CAST
函数在合并时会产生错误与算术运算符。
此语句产生以下样本结果:
SELECT
AverageCost
FROM
dbo.inventory
这个声明:
SELECT
AverageCost * 2.3 AS Price
FROM
dbo.iteminventory
产生此错误
转换数据类型数字的算术溢出错误
将如下语句编写为十进制语句不会产生错误,但是在此语句中添加算术运算符已经躲过了我,我的尝试都导致了错误。
SELECT
CAST(AverageCost AS Decimal(10, 2)) AS Price
FROM
dbo.inventory
先谢谢你的帮助。
答案 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