SQL数字转字符串,不足前面补0

kyoei 2009-07-23 10:16:24
比如FLOAT数字12345.55 转成字符串 00012345.55

请高手帮忙 谢!
...全文
5500 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2009-07-23
  • 打赏
  • 举报
回复
測了一個例子

declare @T table(Num float(38))--float\real轉換為字符 
insert @T select 1230
union all select 1234
union all select 123.45
union all select 123.456
union all select 123.4567
union all select 123.45678

select *,rtrim(Num) as [直接轉換為字符] from @T


select
Num=case when len(Num)=charindex('.',Num) then stuff(Num,len(Num),1,'') else Num end
from
(
select
Num=left(Num,Len(Num)-patindex('%[^0]%',reverse(Num))+1)
from (
select rtrim(cast(Num as decimal(38,10))) as Num from @T
)T
)T2
中国风 2009-07-23
  • 打赏
  • 举报
回复
用變量的浮點變量的變化

declare @f float(34)
set @f=12345.55
select rtrim(@f) as 轉換的值,@f as 值

轉換的值 值
----------------------- ----------------------
12345.5 12345.55

(1 個資料列受到影響)

中国风 2009-07-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 kyoei 的回复:]
比如FLOAT数字12345.55 转成字符串 00012345.55

请高手帮忙 谢!
[/Quote]
FLOAT--轉字符時小數部份要處理一下
fwacky 2009-07-23
  • 打赏
  • 举报
回复

select right('00000000000'+cast(12345.55 as varchar(20)),11)
kyoei 2009-07-23
  • 打赏
  • 举报
回复
谢谢
子陌红尘 2009-07-23
  • 打赏
  • 举报
回复
select right('0000'+rtrim(cast(12345.55 as numeric(10,2))),11)
feixianxxx 2009-07-23
  • 打赏
  • 举报
回复
select '00000000000'+ltrim(12345.55)
sdhdy 2009-07-23
  • 打赏
  • 举报
回复
select right('0000'+cast(12345.55 as varchar) ,11)
/*
----------------------
00012345.55

(所影响的行数为 1 行)
*/

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧