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 */
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
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
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
*/
set @a = 1
select char(ascii(@a)+48)结果
a
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
*/
这个的话建个中间表
1 a
2 b
3 cselect *,中间表.字段
...
inner join 中间表... 加我的mssql学习群 谢谢大家支持 51028890
这个就比较麻烦了.
如果是固定的a转换成q的话,没有规律那就作个中间表,
如果每次不固定转换的话,好象不幸吧
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
*/
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
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