Удаление завершающих нулей с помощью sql [дубликат]
Возможный дубликат:
удаление конечных нулей из десятичной системы счисления в SQL Server
Я пытаюсь использовать функцию round и не показывать ни одного из конечных нулей, но все равно получаю некоторые нули в конце. Я предполагаю получить 10.4, но получаю что-то вроде этого:
10.400000
Вот мой sql:
select round(AVG(CAST(k.TotalNumberDays AS numeric(12,2))),2) TotalNumber
Как я могу удалить конечные нули здесь? Мне нужно показать только 10.4.
4 ответов:
Вы просто должны привести его в виде десятичной дроби(12,2).
select cast(round(AVG(CAST(k.TotalNumberDays AS numeric(12,2))),2) as decimal(12,2)) TotalNumber
SQL Server поддерживает форматы типа данных float без конечных нулей, поэтому можно удалить конечные нули, приведя их к типу float. Например:
Выберите Cast (10.40000 как float)
Это возвращает 10.4
Тем не менее, это проблема представления и действительно должно быть сделано в вашем уровне представления вместо того, чтобы тратить ресурсы на приведение к различным типам данных.
Если я попробую это:
SELECT(ROUND(CAST(10.4 AS numeric(12,2)), 2)Я получаю:
10.40Если вы используете типы
numericилиdecimal, вы получите столько нулей, сколько вы установили в прецизионной части типа данных.В вашем примере вы указали 2 цифры точности, поэтому у вас всегда будет до 2 конечных нулей. Возможно, Вам нужен другой тип данных, например
float.
Просто переместите свой бросок из avg, как здесь:
select CAST(round(AVG(10.3543435),2) as numeric(12,1)) TotalNumber --------------------------------------- 10.4 (1 row(s) affected)
Comments