【叶子函数分享五】将十进制转成十六进制

创建函数

create function  [dbo].[hex](@cardno int )

returns varchar (100)

as

begin

    declare  @temp_mod int

    declare  @i int

    declare  @result varchar(100)

    declare  @temp_x int

    declare  @result_values int

    set  @result=

    set  @i=1

    set  @temp_x=0

while  @cardno>0

    begin

       set  @temp_mod=@cardno%16

       set  @cardno=@cardno/16

       set  @result=(case  @temp_mod when  10 then  ‘A’

                                  when  11 then  ‘B’

                                  when  12 then  ‘C’

                                  when  13 then  ‘D’

                                  when  14 then  ‘E’

                                  when  15 then  ‘F’

                                  else  ltrim(str(@temp_mod)) end  )+@result

    end

return @result

end

 

测试示例

select [dbo].[hex](1808) as Hex

 

运行结果

/*

Hex

———-

710

*/

 

 

第二版

/****************************

  整数转换成进制

  作者:不得闲

  QQ: 75492895

  Email: appleak46@yahoo.com.cn

****************************/

go

Create Function IntToHex(@IntNum int)

returns varchar(16)

as

begin

  declare @Mods int,@res varchar(16)

  set @res=

  while @IntNum <> 0

  begin

    set @Mods =@IntNum % 16

    if @Mods > 9

      set @res = Char(Ascii(‘A’)+@Mods10)+@res

    else

      set @res = Cast(@Mods as varchar(4)) + @res

    set @IntNum = @IntNum/16

  end

  return @res

end

 

测试示例

select dbo.IntToHex(1808)

 

运行结果

/*

710

*/

 

 

 

特别说明:

如果数据量比较大,尽量避免使用自定义函数,以免严重影响性能。


    原文作者:进制转换
    原文地址: https://blog.csdn.net/maco_wang/article/details/6254966
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞