ПОТОЛОК возвращает результат ПОЛ - SQL SERVER 2008 R2

DECLARE @a int;
DECLARE @b int;

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

SELECT CEILING (@a/@b);

Он возвращается как 4 вместо 5. Почему?

Изменить: я хотел бы получить следующее наименьшее целое число, если частное не является целым числом.


person Gopi    schedule 27.08.2014    source источник


Ответы (3)


Пытаться:

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

И учтите также NULLIF(@b,0), чтобы избежать ошибки деления на ноль.

person Rob Farley    schedule 27.08.2014

После деления 9 на 2 десятичная дробь Усекается до целой части - 4, а не Округляется до 5. Попробуйте:

SELECT 9/2

Ресилт равен 4. Тогда CEILING(4) = 4

Чтобы получить следующее целое число, объявите переменные как типы данных, которые могут обрабатывать десятичную часть: NUMERIC, FLOAT, REAL.

person Stoleg    schedule 27.08.2014

SQL Server выполняет целочисленное деление. Итак, 9/2 = 4 в SQL Server.

Принятие потолка целого числа — это то же самое целое число.

person Gordon Linoff    schedule 27.08.2014
comment
Хорошо, но мои входные данные для хранимой процедуры - целые числа :( тогда как мне получить 5? - person Gopi; 27.08.2014