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。。

解决方案 »

  1.   

    update aqbm4300
    set bm_serial=right(rtrim(bm_serial),4)
    where len(rtrim(bm_serial))=5这样试一下
    rtrim()消除右边的空格
      

  2.   

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

  3.   

    update 表 set 字段=
    case when len(字段)<>4 then right(字段,4)
    else 字段 end