9

可能重复:
从 SQL Server 中的十进制中删除尾随零

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

10.400000

这是我的sql:

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

我怎样才能在这里删除尾随零?我只需要显示 10.4。

4

4 回答 4

13

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

select cast(round(AVG(CAST(k.TotalNumberDays AS numeric(12,2))),2) as decimal(12,2)) TotalNumber
于 2012-12-26T20:47:16.030 回答
7

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

选择 Cast(10.40000 作为浮点数)

这将返回 10.4

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

于 2012-12-26T20:41:40.107 回答
1

如果我试试这个:

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

我得到:

10.40

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

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

于 2012-12-26T20:41:38.150 回答
1

只需将您的 CAST 移出 avg 即可,如下所示:

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

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

(1 row(s) affected)
于 2012-12-26T20:43:56.150 回答