Удаление завершающих нулей с помощью sql [дубликат]




Возможный дубликат:
удаление конечных нулей из десятичной системы счисления в SQL Server






Я пытаюсь использовать функцию round и не показывать ни одного из конечных нулей, но все равно получаю некоторые нули в конце. Я предполагаю получить 10.4, но получаю что-то вроде этого:



10.400000


Вот мой sql:



select round(AVG(CAST(k.TotalNumberDays AS numeric(12,2))),2) TotalNumber


Как я могу удалить конечные нули здесь? Мне нужно показать только 10.4.

647   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

    Ничего не найдено.