2012-03-21 6 views
1

При запуске запроса:SQL запросов разделение сервера

select (100/50) 

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

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

select (50/100) 

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

select (25/(30))*100 

Ожидалось, что это даст мне 83.33, но оно также дает 0 вместо этого?

ответ

4

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

Для того, чтобы получить десятичную точку, либо записи:

Select 50.0/100 

или закиньте число oÀ десятичной - т.е.

SELECT (CAST(20 AS DECIMAL(5,1))/30) 
1

SQL Server рассматривает ваши номера как int и дает результат int.

попробовать

select 100.0/50 

select (25.0/(30))*100 
2

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

select (50/100.0) 

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

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

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

Смежные вопросы