日期:2014-5-18 浏览次数:20161次

关于序号长度不同的问题
SQLSERVER2005中,有一序号列,长度有4和5位,我想把它都改成4位或者5位长度,中长度为5的数字中的后四位,结果造成5位的序号全部为空了,请问下面的哪里错了?

update   aqbm4300
set   bm_serial=right(bm_serial,4)
where   len(bm_serial)=5
该如何改进呢?


例如:序号为   0001,0002,0003,00004,00005。我想都改成4位的,即0004,0005。。。。。

------解决方案--------------------
update aqbm4300
set bm_serial=right(rtrim(bm_serial),4)
where len(rtrim(bm_serial))=5

这样试一下
rtrim()消除右边的空格
------解决方案--------------------
原因:
bm_serial是char或者nchar类型,后面有自动添加的空格
解决方法:
楼上的,应该可以
update aqbm4300
set bm_serial=right(rtrim(bm_serial),4)
where len(bm_serial)=5


------解决方案--------------------
update 表 set 字段=
case when len(字段) <> 4 then right(字段,4)
else 字段 end