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