从 SQL Server 中的十进制中删除尾随零

新手上路,请多包涵

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

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

如何删除那些零?

原文由 abatishchev 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 482
2 个回答

A 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 用点格式化十进制。显然是一个 已知问题。)

原文由 Andomar 发布,翻译遵循 CC BY-SA 2.5 许可协议

当我将 long deicmals 转换为 nvarchar 时,我使用转换为双精度并转换为 nvarchar

 SELECT CAST(CONVERT(DOUBLE PRECISION, 1.234567000000) as nvarchar(255))

输出:

 1.23457

原文由 Alex Vazhev 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进