将DECIMAL(14,3)舍入到SQL 2008中的第三个十进制数字

时间:2009-08-20 19:14:00

标签: sql tsql sql-server-2008 operators

我必须向下舍入所有类型为DECIMAL(14,3)的传入数据,其中最后一个数字为3位十进制数。即:

100; 100.0; 100.00; 100.000 -> 100
100.2; 100.02; 100.20; 100.22 -> 100.xx

100.221 -> 100.22
100.229 -> 100.22

使用哪个SQL运算符可以检查十进制数的除法残差是否大于零?

2 个答案:

答案 0 :(得分:4)

  

我可以使用哪个SQL运算符进行检查   十进制的除法残差   数字大于零?

我不知道你想要用它实现什么,但如果你想要一种计算小数余数的方法,%(Modulo)就是这样。它在将第一个数字表达式除以第二个数字表达式之后提供整数余数。所以,你可以这样做

1)SELECT 100.229 % 1;
   GO

结果为0.229

2)SELECT (100.229 * 100) % 1;
   GO

结果为0.900。你有十进制除法的残留物。

但是如果你想截断,你可以按照David B建议并使用ROUND()来截断:

SELECT ROUND(100.221, 2, 1); 
GO 
SELECT ROUND(100.229, 2, 1); 
GO

答案 1 :(得分:3)

http://msdn.microsoft.com/en-us/library/ms175003.aspx

参见章节:使用Round to Truncate