我想把一组字符串转换成另一组字符串,如12345换成abcde,135换成ace等(1换成a,2换成b等等),我该怎么实现呢?

解决方案 »

  1.   

    print replace('12345','12345','abcde') print replace('12345','1','a')print replace('12345','2','b').................
      

  2.   

    declare @str varchar(20),@i int
    select @str='12345',@i=1while @i<=len(@str)
    begin
        select @str=stuff(@str,@i,1,char(ascii(substring(@str,@i,1))+48)),@i=@i+1
    endprint @str
    /*
    abcde
    */
      

  3.   

    declare @a varchar(2)
    set @a = 1
    select char(ascii(@a)+48)结果
    a
      

  4.   


    SQL codedeclare @str varchar(20),@i int
    select @str='12345',@i=1while @i<=len(@str)
    begin
        select @str=stuff(@str,@i,1,char(cast(substring(@str,@i,1)as int)+64)),@i=@i+1
    endprint @str
    /*
    abcde
    */
      

  5.   


    这个的话建个中间表
    1   a
    2   b
    3   cselect *,中间表.字段
    ...
    inner join 中间表...                                                  加我的mssql学习群 谢谢大家支持 51028890
      

  6.   

    谢谢!你提供的很有参考价值 ,我要转换的没有一定的规律,例如,将a转换成q,将b转换成w等!这种情况该怎么做呢?
      

  7.   

    我要转换的没有一定的规律,例如,将a转换成q,将b转换成w等!
    这个就比较麻烦了.
    如果是固定的a转换成q的话,没有规律那就作个中间表,
    如果每次不固定转换的话,好象不幸吧
      

  8.   

    declare @str varchar(20),@i int
    select @str='12345',@i=1while @i<=len(@str)
    begin
        select @str=stuff(@str,@i,1,char(ascii(substring(@str,@i,1))+48)),@i=@i+1
    endprint @str
    /*
    abcde
    */
      

  9.   

    declare @t table (no varchar(10))
    insert into @t 
         select '12345' union 
         select '135'select (
              select char(substring(no,rn,1)+96)
              from (
                       select (
                                  select count(*) from sysobjects where id<=b.id
                                ) as rn 
                       from sysobjects b
                      ) c 
              where len(t.no)>=c.rn
              order by rn
             for xml path('')
            ) as no
    from @t t
      

  10.   

    declare @str varchar(20),@i int
    select @str='12345',@i=1while @i<=len(@str)
    begin
        select @str=stuff(@str,@i,1,char(ascii(substring(@str,@i,1))+20)),@i=@i+1
    endprint @str