DECLARE @a int;
DECLARE @b int;
SET @a = 9;
SET @b = 2;
SELECT CEILING (@a/@b);
它返回4而不是5.为什么?
编辑:如果商数不是整数,我想得到下一个最小整数。
答案 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
将下一个整数声明变量作为可处理小数部分的数据类型:NUMERIC
,FLOAT
,REAL
。
答案 2 :(得分:3)
SQL Server执行整数除法。所以SQL Server中的9/2 = 4。
取整数的上限是相同的整数。