SQL Server запрос на разделение - PullRequest
2 голосов
/ 21 марта 2012

Когда я запускаю запрос:

select (100/50)

Это дает мне 2 - хорошо.

Но когда я запускаю запрос:

select (50/100)

Я ожидал, что он даст мне 0,5 ... но вместо этого он даст мне 0? Зачем? и как можно получить 0,5?

select (25/(30))*100

Я ожидал, что он даст мне 83,33, но вместо этого он также даст 0?

Ответы [ 3 ]

9 голосов
/ 21 марта 2012

Когда вы делите два целых числа, результатом также является целое число, поэтому 50/100 равно 0,5, что является целым числом 0.

Чтобы получить десятичную точку, введите:

Select 50.0 / 100

или приведите целое или десятичное число - т.е.

SELECT (CAST(20 AS DECIMAL(5,1))/30)
2 голосов
/ 21 марта 2012

Попробуйте это:

select (50/100.0)

Использование целого числа для деления приведет к нулю, если результат меньше 1, поскольку значения integer могут быть только круглыми числами.

0.99 приведет к нижнему значению = 0
3.876 приведет к 3 и т. Д.

Используйте переменные decimal, чтобы получить желаемый результат. Вы можете легко сделать это, используя . в своих числах: 100.0

1 голос
/ 21 марта 2012

SQL Server считает ваши числа как int и выдает результат int.

try

select 100.0/50

select (25.0/(30))*100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...