我必须向下舍入所有类型为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运算符可以检查十进制数的除法残差是否大于零?
答案 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