最近做项目扩展的时候,遇到问题就是将整型转换成指定长度的16进制
刚开始就是直接使用 cast(12 as varbinary(4))但是发现这个不能解决我的问题
所以就上网搜了一下,然后改了改,下面就是函数:
Create Function IntToHexLength(@Num int,@HxLength int)
returns varchar(16)
as
begin
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=''+@res
set @Length=@Length-1
end
END
return @res
end
然后用select dbo.IntToHexLength(15,4)
就得到:这样就符合了要求!