Используя T-SQL и Microsoft SQL Server, я хотел бы указать количество десятичных цифр, когда делаю 2 целых числа, например:
select 1/3
Это в настоящее время возвращается 0
. Я хотел бы, чтобы это вернулось 0,33
.
Что-то вроде:
select round(1/3, -2)
Но это не работает. Как я могу достичь желаемого результата?
sql-server
sql-server-2008
division
rounding
LaBracca
источник
источник
Ответы:
Предложения от stb и xiowl хороши, если вы ищете константу. Если вам нужно использовать существующие поля или параметры, которые являются целыми числами, вы можете сначала привести их к плавающим значениям:
или
источник
decimal
Потому что SQL Server выполняет целочисленное деление. Попробуй это:
Это полезно, когда вы передаете целые числа в качестве параметров.
источник
Нет необходимости разыгрывать их обоих. Тип данных результата для подразделения всегда тот, который имеет более высокий приоритет типа данных . Таким образом, решение должно быть:
или
источник
использование
Это сделает работу.
источник
Я понимаю, что
CAST
INGFLOAT
не разрешен в MySQL и выдает ошибку при попытке,CAST(1 AS float)
как указано в MySQL Dev .Обходной путь к этому прост. Просто сделать
Затем используйте
ROUND
для достижения определенного количества десятичных знаков, таких какВышеприведенный SQL делит 1 на 2 и возвращает число с плавающей запятой с 3 десятичными знаками, как в этом случае
0.500
.Можно
CAST
использовать следующие типы: двоичный, символ, дата, дата-время, десятичное число, json, nchar, подпись, время и без знака .источник
CAST
, просто не разрешает приведение кFLOAT
. Транслировать наDECIMAL
вместо этого. См. Например, stackoverflow.com/questions/7368163/… .Похоже, этот трюк работает в SQL Server и короче (на основе предыдущих ответов)
Или:
источник
SELECT 100.0 * @Elapsed / @Total
Использовать это
select cast((1*1.00)/3 AS DECIMAL(16,2)) as Result
Здесь, в этом sql, сначала нужно преобразовать в число с плавающей точкой или умножить на 1.00. Какой результат будет числом с плавающей точкой. Здесь я рассмотрю 2 десятичных знака. Вы можете выбрать то, что вам нужно.
источник
Если вы пришли сюда (как и я), чтобы найти решение для целочисленного значения , вот ответ:
возвращает 5
источник