可能重复:
从 SQL Server 中的十进制中删除尾随零
我正在尝试使用 round 函数并且不显示任何尾随零,但最后仍然得到一些零。我想得到 10.4 但得到这样的东西:
10.400000
这是我的sql:
select round(AVG(CAST(k.TotalNumberDays AS numeric(12,2))),2) TotalNumber
我怎样才能在这里删除尾随零?我只需要显示 10.4。
可能重复:
从 SQL Server 中的十进制中删除尾随零
我正在尝试使用 round 函数并且不显示任何尾随零,但最后仍然得到一些零。我想得到 10.4 但得到这样的东西:
10.400000
这是我的sql:
select round(AVG(CAST(k.TotalNumberDays AS numeric(12,2))),2) TotalNumber
我怎样才能在这里删除尾随零?我只需要显示 10.4。
您只需要将其转换为小数(12,2)。
select cast(round(AVG(CAST(k.TotalNumberDays AS numeric(12,2))),2) as decimal(12,2)) TotalNumber
SQL Server 支持不带尾随零的浮点数据类型格式,因此您可以通过将 转换为浮点数来删除尾随零。例如:
选择 Cast(10.40000 作为浮点数)
这将返回 10.4
但是,这是一个表示问题,应该在表示层中完成,而不是浪费资源转换为不同的数据类型。
如果我试试这个:
SELECT(ROUND(CAST(10.4 AS numeric(12,2)), 2)
我得到:
10.40
如果您使用numeric
或decimal
类型,您将获得与您在数据类型的精度部分中设置的一样多的零。
在您的示例中,您指定了 2 位精度,因此您将始终有最多 2 个尾随零。也许您需要不同的数据类型,例如float
.
只需将您的 CAST 移出 avg 即可,如下所示:
select CAST(round(AVG(10.3543435),2) as numeric(12,1))
TotalNumber
---------------------------------------
10.4
(1 row(s) affected)