SQL SERVER自定义函数j将整数转成指定长度的16进制

来源:互联网 发布:linux 回到根目录 编辑:程序博客网 时间:2024/05/22 02:03


最近做项目扩展的时候,遇到问题就是将整型转换成指定长度的16进制

刚开始就是直接使用 cast(12 as varbinary(4))但是发现这个不能解决我的问题

所以就上网搜了一下,然后改了改,下面就是函数:

Create Function IntToHexLength(@Num int,@HxLength int)returns varchar(16)asbegin  declare @Mods int,@res varchar(16),@Length int  set @res=''  while @Num <> 0   begin    set @Mods =@Num % 16    if @Mods > 9       set @res = Char(Ascii('A')+@Mods-10)+@res    else       set @res = Cast(@Mods as varchar(4)) + @res    set @Num = @Num/16  end  set @Length=@HxLength-DataLength(@res)  if(DataLength(@res)<@HxLength)  BEGIN  while @Length<>0  begin  SET @res='0'+@res  set @Length=@Length-1  end  END  return @resend

然后用select dbo.IntToHexLength(15,4)

就得到:

0 0