有没有办法修剪小数的尾随0并在sql中返回为字符串?

时间:2011-05-21 02:49:11

标签: sql sql-server tsql precision

我的数据库有一个字段“TestNumber numeric(27,10)”,它的值如下:

56.1234567800
 0.0000000010
 1.0010100000

Convert(Varchar(28),TestNumber)会将上述TestNumber转换为VARCHAR

sql中是否有任何函数(我使用sql server 2008R2)来修剪小数点尾部的'0',所以我实际上可以得到这些字符串:

'56.12345678'
 '0.000000001'
 '1.00101'

2 个答案:

答案 0 :(得分:3)

  

sql中是否有任何功能

不,我不知道。您可以将所有'0'替换为' ',使用rtrim并再次放回'0'

with T(N) as
(
 select 56.1234567800 union all
 select 0.0000000010 union all
 select 1.0010100000 union all
 select 100
)

select
  replace(rtrim(replace(convert(varchar(28), T.N), '0', ' ')), ' ','0') as N
from T

结果:

N
------------
56.12345678
0.000000001
1.00101
100.

答案 1 :(得分:0)

SELECT FORMAT(CAST(99.0000    AS DECIMAL(18,7)), 'g18')

SELECT FORMAT(CAST(0.0009856  AS DECIMAL(18,5)), 'g10')

SELECT FORMAT(CAST(2.0        AS DECIMAL(18,7)), 'g15')