sql 26字母进位sql
基本思路,把需要进行加法运算的字符转换为10进制后,进行进位10进制的加法,加法完成的结果在转换为26进制字符表示方法,sql 如下,如果有更好的思路或者方法,可以留言!
[sql]
--输入表达式
declare @expression nvarchar(max)
set @expression='aa'
--需要加多少位
declare @count int
set @count = 0
---------------------
--字母表达式长度
declare @length int
set @length = len(@expression)
--转为10进制后的数字
declare @charvalue int
set @charvalue =0
--循环每个字母位转为10进制
while @length > 0
begin
set @charvalue += (ascii(substring(@expression,@length,1))-64)*power(26,@length-1)
set @length -=1
end
--10进制加法
set @charvalue += @count
--新的字符表达式位数
declare @newcharlength int
--计算加完后的十进制转为字母26进制的位数
set @newcharlength = log(@charvalue)/log(26)
--加完后表达式
declare @newchar nvarchar(max)
set @newchar = ''
while @newcharlength >= 0
begin
declare @indexnum int
set @indexnum = @charvalue/power(26,@newcharlength)
set @newchar += substring('abcdefghijklmnopqrstuvwxyz', @indexnum,1)
select @charvalue,power(26,@newcharlength),@indexnum
set @charvalue -= @indexnum * power(26,@newcharlength)
set @newcharlength -= 1
end
select @newchar