zoukankan      html  css  js  c++  java
  • sqlserver 函数 之 进制转换

    进制转换基于一个原则: 求模倒到余。

    SQL 中没有数组,所以只能用 表变量来表示。 

    如下:

    alter function [F_ToRadixString](@num int , @radix int)
    returns varchar(500)
    as 
    begin
    
        if ( @radix > 36 ) return null ;
        if ( @radix < 0 ) return null ;
        
        declare @flag bit;
        if ( @num < 0 ) set @flag = 0 ;
        else set @flag = 1 ;
        
        set @num = abs(@num)
        
        declare @ret varchar(50);
        set @ret = '';
        
        declare @it table(i int identity(1,1),  v char(1) );
        insert into @it(v) values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'),('G'),('H'),('I'),('J'),('K'),('L'),('M'),('N'),('O'),('P'),('Q'),('R'),('S'),('T'),('U'),('V'),('W'),('X'),('Y'),('Z')
    
        while @num != 0 begin
            select @ret = @ret + v from @it where i -1  = (@num % @radix) 
            
            set @num = @num / @radix
        end
        
        set @ret = REVERSE(@ret)
        
        if( @flag = 0) set @ret = '-' + @ret ;
        
        return  @ret ;
        
    end ;

    执行:

    select dbo.[F_ToRadixString](35,36)    =>  'Z'

    select dbo.[F_ToRadixString](-35,36)    =>  '-Z'

    alarm   作者:NewSea     出处:http://newsea.cnblogs.com/    QQ,MSN:iamnewsea@hotmail.com

      如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。
  • 相关阅读:
    Model, View(Camera), Perspective (1)
    流状态和c++的异常处理
    VAO VBO EBO(3)
    VAO VBO EBO(2)
    VAO VBO EBO(1)
    函数指针(2)
    函数指针
    内联函数和宏函数的一些区别
    关于宏的一些知识
    关于未来方向
  • 原文地址:https://www.cnblogs.com/newsea/p/2784605.html
Copyright © 2011-2022 走看看