我有一个列,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。
添加回答
举报
0/150
提交
取消