CEILING返回FLOOR结果 - SQL SERVER 2008 R2

时间:2014-08-27 10:55:51

标签: sql database sql-server-2008 floor ceiling

DECLARE @a int;
DECLARE @b int;

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

SELECT CEILING (@a/@b);

它返回4而不是5.为什么?

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

3 个答案:

答案 0 :(得分:6)

尝试:

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

并考虑NULLIF(@b,0),以避免出现分区错误。

答案 1 :(得分:4)

将9除以2之后,小数部分截断为其整数部分-4,而不是 Rounded 为5.尝试:

SELECT 9/2

Resilt是4.然后CEILING(4) = 4

将下一个整数声明变量作为可处理小数部分的数据类型:NUMERICFLOATREAL

答案 2 :(得分:3)

SQL Server执行整数除法。所以SQL Server中的9/2 = 4。

取整数的上限是相同的整数。