使用sql删除尾随零

时间:2012-12-26 20:38:09

标签: sql sql-server tsql

  

可能重复:
  Remove trailing zeros from decimal in SQL Server

我正在尝试使用round函数而不显示任何尾随零但最后仍然得到一些零。我想要获得10.4但得到这样的东西:

10.400000

这是我的sql:

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

如何删除此处的尾随零?我只需要显示10.4。

4 个答案:

答案 0 :(得分:10)

您只需将其转换为小数(12,2)。

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

答案 1 :(得分:6)

SQL Server支持不带尾随零的格式浮点数据类型,因此您可以通过将其转换为浮点数来删除尾随零。例如:

选择Cast(10.40000 as float)

这将返回10.4

但是,这是一个演示问题,实际上应该在您的表示层中完成,而不是浪费资源转换为不同的数据类型。

答案 2 :(得分:1)

如果我试试这个:

SELECT(ROUND(CAST(10.4 AS numeric(12,2)), 2)

我明白了:

10.40

如果您使用numericdecimal类型,您将获得与在数据类型的精度部分中设置的零一样多的零。

在您的示例中,您指定了2位精度,因此您最多只能有2个尾随零。也许您需要不同的数据类型,例如float

答案 3 :(得分:1)

只需将您的CAST移出平均值即可:

select CAST(round(AVG(10.3543435),2) as numeric(12,1)) 

TotalNumber
---------------------------------------
10.4

(1 row(s) affected)