我的数据库有一个字段“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'
答案 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')