我正在尝试使用round函数而不显示任何尾随零但最后仍然得到一些零。我想要获得10.4但得到这样的东西:
10.400000
这是我的sql:
select round(AVG(CAST(k.TotalNumberDays AS numeric(12,2))),2) TotalNumber
如何删除此处的尾随零?我只需要显示10.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
如果您使用numeric
或decimal
类型,您将获得与在数据类型的精度部分中设置的零一样多的零。
在您的示例中,您指定了2位精度,因此您最多只能有2个尾随零。也许您需要不同的数据类型,例如float
。
答案 3 :(得分:1)
只需将您的CAST移出平均值即可:
select CAST(round(AVG(10.3543435),2) as numeric(12,1))
TotalNumber
---------------------------------------
10.4
(1 row(s) affected)