请问下关于字符串的数字相加的问题。有个表列mycol,属性为VARCHAR(5),其中存的是00001,00002,00003 等。我想在想将他们都加一个数,这个数随便,假设为 6,44,321,难么结果应该成为 00007,00046,00324.(结果一定要是前导0的5位)我加的时候转换类型老是不对,请教大家。

解决方案 »

  1.   

    declare @s varchar(5)
    set @s = '00001'
    set @s = right(@s+100006, 5) -- + 6
    select @s -- 00007
      

  2.   


    right('0000' + cast(cast(mycol as int) + 6 as varchar),5)
      

  3.   

    create table tb(mycol varchar(5))
    insert into tb values('00001')
    insert into tb values('00002')
    insert into tb values('00003')
    goselect right('0000' + cast(cast(mycol as int) + 6 as varchar),5) from tb
    /*
               
    ---------- 
    00007
    00008
    00009(所影响的行数为 3 行)
    */select right('0000' + cast(cast(mycol as int) + 44 as varchar),5) from tb
    /*
    ---------- 
    00045
    00046
    00047(所影响的行数为 3 行)
    */select right('0000' + cast(cast(mycol as int) + 321 as varchar),5) from tb
    /*
               
    ---------- 
    00322
    00323
    00324(所影响的行数为 3 行)
    */
    drop table tb