首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在SQL Server中删除小数的尾随零

在SQL Server中删除小数的尾随零
EN

Stack Overflow用户
提问于 2010-05-30 18:56:45
回答 17查看 278.3K关注 0票数 94

我有一个列DECIMAL(9,6),即它支持像999,123456这样的值。

但是当我插入像123,4567这样的数据时,它变成了123,456700

如何删除这些零?

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2010-05-30 19:04:51

decimal(9,6)在逗号右侧存储6位数字。是否显示尾随零是一个格式化决定,通常在客户端实现。

但是,由于SSMS格式化float时没有尾随零,因此可以通过将decimal转换为float来删除尾随零

select 
    cast(123.4567 as DECIMAL(9,6))
,   cast(cast(123.4567 as DECIMAL(9,6)) as float)

打印:

123.456700  123,4567

(我的小数分隔符是逗号,但是SSMS的小数格式是用点表示的。显然是known issue。)

票数 161
EN

Stack Overflow用户

发布于 2018-05-16 13:51:18

我不愿意强制转换为浮点型,因为我的小数点中可能会有比浮点型更多的数字。

FORMAT与标准.net格式字符串'g8‘一起使用时,将返回小数(例如1e-08)非常小的情况下的科学记数法,这也不适合

使用自定义格式字符串(https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings)可以实现我想要的功能:

DECLARE @n DECIMAL(9,6) =1.23;
SELECT @n
--> 1.230000
SELECT FORMAT(@n, '0.######')
--> 1.23

如果您希望您的数字至少有一个尾随零,因此2.0不会变成2,请使用像0.0#####这样的格式字符串

小数点是本地化的,因此使用逗号作为小数点分隔符的区域性将遇到逗号输出。是

当然,这是一种令人沮丧的做法,即让数据层进行格式化(但在我的示例中没有其他层;用户实际上是在运行存储过程并将结果放入电子邮件:/ )

票数 23
EN

Stack Overflow用户

发布于 2015-06-23 07:37:32

SELECT CONVERT(DOUBLE PRECISION, [ColumnName])
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2938296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档