SQL 列:LAC 数字不足5位时,左边补零,求语句

oiph 2013-07-12 02:50:05
表TB 中有列 LAC(数据类型为float)

现如下

LAC
203
2
3456

想改成
LAC
00203
00002
03456
...全文
360 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oiph 2013-07-12
  • 打赏
  • 举报
回复
引用 5 楼 ap0405140 的回复:
[quote=引用 4 楼 ffmxxx 的回复:] 谢谢,大体思路是我要的,怪我没说清楚。我想在原表中改变。

 update tb set LAC=replicate('0',5-len(LAC))+rtrim(LAC)
[/quote] 谢谢,完美解决
唐诗三百首 2013-07-12
  • 打赏
  • 举报
回复
引用 5 楼 ap0405140 的回复:
[quote=引用 4 楼 ffmxxx 的回复:] 谢谢,大体思路是我要的,怪我没说清楚。我想在原表中改变。

 update tb set LAC=replicate('0',5-len(LAC))+rtrim(LAC)
[/quote] --> 不对呀! LAC字段是float数据类型,数值前导0会自动取消的. 要用字符型(如varchar)的字段来存你要的数据喔.
唐诗三百首 2013-07-12
  • 打赏
  • 举报
回复
引用 4 楼 ffmxxx 的回复:
谢谢,大体思路是我要的,怪我没说清楚。我想在原表中改变。

 update tb set LAC=replicate('0',5-len(LAC))+rtrim(LAC)
oiph 2013-07-12
  • 打赏
  • 举报
回复
引用 2 楼 ap0405140 的回复:

create table tb(LAC float)

insert into tb(LAC)
 select 203 union all
 select 2 union all
 select 3456


select replicate('0',5-len(LAC))+rtrim(LAC) 'LAC' from tb

/*
LAC
-------------------------
00203
00002
03456

(3 row(s) affected)
*/
谢谢,大体思路是我要的,怪我没说清楚。我想在原表中改变。
Leon_He2014 2013-07-12
  • 打赏
  • 举报
回复

with t as
(
select 203 LAC
union all select 2
union all select 3456
)
select stuff(convert(varchar(20), 100000+LAC),1,1,'') as LAC
from t
唐诗三百首 2013-07-12
  • 打赏
  • 举报
回复

create table tb(LAC float)

insert into tb(LAC)
 select 203 union all
 select 2 union all
 select 3456


select replicate('0',5-len(LAC))+rtrim(LAC) 'LAC' from tb

/*
LAC
-------------------------
00203
00002
03456

(3 row(s) affected)
*/
哥眼神纯洁不 2013-07-12
  • 打赏
  • 举报
回复

with tb(LAC)as(
select 203 union
select 2 union
select 3456
)
select case LEN(LAC) 
when 1 then '0000'+CONVERT(varchar,LAC)  
when 2 then '000'+CONVERT(varchar,LAC)
when 3 then '00'+CONVERT(varchar,LAC)
when 4 then '0'+CONVERT(varchar,LAC)
end
from tb

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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