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