CEILING返回FLOOR结果 - SQL SERVER 2008 R2

8
DECLARE @a int;
DECLARE @b int;

SET @a = 9;
SET @b = 2;

SELECT CEILING (@a/@b);

它返回的是4,而不是5。为什么?

编辑:如果商不是整数,我想要得到下一个最小的整数。

3个回答

11

尝试:

SELECT CEILING (@a/CAST(@b AS float))

同时还需考虑 NULLIF(@b,0),以避免除零错误。


4

将9除以2后,小数部分被截断为其整数部分-4,而不是被四舍五入为5。请尝试:

SELECT 9/2

结果是4。然后CEILING(4) = 4

要获得下一个整数,请声明能够处理小数部分的数据类型变量:NUMERICFLOATREAL


3

SQL Server会进行整数除法。因此,9/2在SQL Server中的结果为4。

将整数取上限等同于保留原整数。


好的,但是我的存储过程输入参数是整数 :( 那么我怎么得到5呢? - Gopi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接