CEILING возвращает результат FLOOR - SQL SERVER 2008 R2
DECLARE @a int;
DECLARE @b int;
SET @a = 9;
SET @b = 2;
SELECT CEILING (@a/@b);
Возвращается как 4 вместо 5. Почему?
Изменить: я хотел бы получить следующее наименьшее целое число, если частное не целое число.
3 ответа
Решение
Пытаться:
SELECT CEILING (@a/CAST(@b AS float))
И посмотрим NULLIF(@b,0)
также, чтобы избежать ошибки деления на ноль.
После деления 9 на 2 десятичная дробь усекается до целой части - 4, а не округляется до 5. Попробуйте:
SELECT 9/2
Resilt 4. Тогда CEILING(4) = 4
Чтобы получить следующее целое число, объявите переменные как типы данных, которые могут обрабатывать десятичную часть: NUMERIC
,FLOAT
, REAL
,
SQL Server выполняет целочисленное деление. Так что 9/2 = 4 в SQL Server.
Взятие потолка целого числа является тем же самым целым числом.