将varchar值int转换为数据类型int时转换失败

时间:2017-11-27 06:20:44

标签: sql sql-server stored-procedures

我希望在我的sql语句中将值100加倍。 但是当将varchar值0.0035转换为数据类型int时,它显示像转换失败的错误。

我知道这个值是在varchar中。但我希望多次使用100

这是我原来的查询代码:

@WalCalc as VARCHAR(20) = NULL,
Set @SQLQuery = @SQLQuery + 'CAST(   (ISNULL(DI.Coupon,0)) AS varchar(50)) AS ''Coupon'',

和转换后的查询

Set @SQLQuery = @SQLQuery + 'CAST(   (ISNULL(DI.Coupon,0) * 100) AS Decimal(18,3)) AS ''Coupon'',

请有人帮助我

3 个答案:

答案 0 :(得分:3)

我认为您应该将Coupon列转换为小数第一个,然后再乘以100:

Set @SQLQuery = @SQLQuery + 'ISNULL(CAST(DI.Coupon AS Decimal(18, 3)), 0.0) * 100 AS ''Coupon'',

答案 1 :(得分:2)

试试这个,

首先CAST您的优惠券价值为NUMERIC并执行乘法运算:

Set @SQLQuery = @SQLQuery + 'CAST(   (ISNULL(CAST(DI.Coupon AS NUMERIC(18,3)),0) * 100) AS Decimal(18,3)) AS Coupon

这就是我执行的内容:

SELECT CAST((ISNULL(CAST('0.0702' AS NUMERIC(18,5)),0) * 100) AS Decimal(18,3)) AS Coupon

<强>输出

Coupon
7.020

答案 2 :(得分:2)

应该是这样的

Set @SQLQuery = @SQLQuery + 'CAST((ISNULL(DI.Coupon,0) ) AS Decimal(18,3)) * 100 AS ''Coupon'',