为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

紫衣仙女 2019-09-02 15:55:18
我有一个列,DECIMAL(9,6)即它支持像999,123456这样的值。但是当我插入像123,4567这样的数据时,它变成了123,456700如何删除那些零?
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

您可以使用该FORMAT()功能(SqlAzure和Sql Server 2012+):


SELECT FORMAT(CAST(15.12     AS DECIMAL(9,6)), 'g18')  -- '15.12'

SELECT FORMAT(CAST(0.0001575 AS DECIMAL(9,6)), 'g10')  -- '0.000158'

SELECT FORMAT(CAST(2.0       AS DECIMAL(9,6)), 'g15')  -- '2'

使用FLOAT(或REAL)时要小心:不要使用g17或更大(或者g8使用REAL更大),因为机器表示的精度有限会导致不必要的影响:


SELECT FORMAT(CAST(15.12 AS FLOAT), 'g17')         -- '15.119999999999999'

SELECT FORMAT(CAST(0.9 AS REAL), 'g8')             -- '0.89999998'

SELECT FORMAT(CAST(0.9 AS REAL), 'g7')             -- '0.9'

此外,请注意,根据文件:


FORMAT依赖于.NET Framework公共语言运行时(CLR)的存在。此功能不会被远程控制,因为它取决于CLR的存在。远程处理需要CLR的函数会导致远程服务器出错。


也适用于SqlAzure。


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 549 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信