SQL Server存储过程转换小数点没有舍入到两位小数

时间:2017-11-30 13:17:55

标签: sql-server tsql stored-procedures

小数点转换,没有舍入到两位小数

我的变量是数据类型varchar,所以我必须将其转换为数字。但是我的输出值是0.0012499987,我希望输出为1.24,即不对值进行舍入。

这是我的代码

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

在这里,我必须乘以100,不要删除它; di.coupon的类型为varchar。记住它吧

我想要的结果值为varchar

请有人帮助我

示例输入/输出

0.013923    1.39

3 个答案:

答案 0 :(得分:1)

最简单的方法是获取原始列的子字符串并将其转换为数字。然后它将删除剩余的数字。

在SQL Server中,LEFT(第4列)将执行您想要的操作。

但正如@HABO指出的那样,内置函数Round()将接受一个截断小数值的参数。

答案 1 :(得分:1)

您可以使用CAST

编辑:我添加了一个ISNULL

DECLARE @N

SET @N = '0.013923'

SELECT CAST(CAST(CAST(ISNULL (@N, 0) AS DECIMAL(38,18)) * 100 AS DECIMAL(18,2)) AS VARCHAR (50))

答案 2 :(得分:0)

我已经得到了答案。这可能对某些人有帮助

cast(left(('00122.45678')*100,instr(('00122.45678')* 100,'.','1')+3)as varchar) as stb

输出:

122.456

如果你想要2个小数而不是圆形,那么你可以添加+2而不是+3