猿问

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

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

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

如何删除那些零?


紫衣仙女
浏览 550回答 3
3回答

墨色风雨

您可以使用该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。
随时随地看视频慕课网APP
我要回答