在SQL Server中获取n个小数位而不是舍入

时间:2014-11-14 19:30:25

标签: sql sql-server decimalformat

我需要从SQL Server中的十进制值中选择两位数

16.987490   --> 16.98
8.0189918   -->  8.01
34.5566901  --> 34.55

3 个答案:

答案 0 :(得分:3)

最简单的方法是减去0.005并使用round()str()cast()

select round(val - 0.005, 2)

答案 1 :(得分:2)

您可以使用ROUND

select CAST(ROUND (16.987490  , 2 , 1 ) as NUMERIC(18,2))
select CAST(ROUND (8.0189918  , 2 , 1 ) as NUMERIC(18,2))
select CAST(ROUND (34.5566901  , 2 , 1 ) as NUMERIC(18,2))

<强>输出

16.98
8.01
34.55

答案 2 :(得分:1)

declare @dec decimal(15,5)

set @dec = 16.987490

select cast(@dec as decimal(19,2))

因此解决方案是强迫&#34;转换为2的分数。

解决方案2,因为首先没有工作:

declare @dec decimal(15,5)

set @dec = 8.0189918

select cast(substring(cast(@dec as varchar(50)), 0, CHARINDEX('.', cast(@dec as varchar(50)), 1) + 3) as decimal(19,2))