SQL 26字母进位SQL

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  

 

 

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐