有没有一种方法可以在sql中修剪尾随0的小数并作为字符串返回?

有没有一种方法可以在sql中修剪尾随0的小数并作为字符串返回?,sql,sql-server,tsql,precision,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'

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

这三个数字是56.1234567800“你为什么要那样做”这个问题突然出现在我的脑海里……支持米奇的回答,格式化是针对客户端应用程序的,将数值转换为字符串将阻止任何进一步的数据操作,除非您再次将它们转换回来。我希望这样做的原因是,在我的前端应用程序中,我希望将数据库中的数据转换为字符串(而不是浮点),并且字符串应该与数据库中的数字完全相同,但没有所有尾随“0”。我的前端应用程序是一个Delphi应用程序。它执行一个过程,然后读取过程中选择的字段。这三个数字是56.1234567800。我突然想到“你为什么要这样做?”这个问题……支持米奇的回答,格式化是针对客户端应用程序的,将数值转换为字符串将阻止任何进一步的数据操作,除非您再次将它们转换回来。我希望这样做的原因是,在我的前端应用程序中,我希望将数据库中的数据转换为字符串(而不是浮点),并且字符串应该与数据库中的数字完全相同,但没有所有尾随“0”。我的前端应用程序是一个Delphi应用程序。它执行一个过程,然后读取过程中选择的字段。