Почему запрос select (1/2) * 100 возвращает 0 вместо 50 в SQL Server 2005 - PullRequest
2 голосов
/ 09 августа 2010

Я бы хотел получить 50 вместо 0.

Ответы [ 4 ]

8 голосов
/ 09 августа 2010

Это из-за целочисленного деления; 1/2 = 0, 0 * 100 = 0.

Используйте 1/2.0 * 100 вместо

1 голос
/ 09 августа 2010

Вероятно, это связано с тем, что SQL Server использует целочисленную арифметику для расчета.Целая часть 1/2 равна 0, а 0 * 100 = 0.

0 голосов
/ 09 августа 2010

То же самое в C #, Java и VB.net, по крайней мере: целочисленная арифметика.

Почему вы ожидаете, что SQL будет отличаться в оценке выражений для других языков?

0 голосов
/ 09 августа 2010

Вероятно, он делает целочисленное деление на 1/2, оценивая его как 0, так что тогда весь оператор равен нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...