写了个函数create function funcIntToHex(@k int) returns varchar(20) as begin declare @i int declare @shang int,@yushu int declare @str varchar(100) set @shang=@k/16 set @yushu=@k%16 set @str=dbo.funcTohex(@yushu) if @shang<15 begin set @str=dbo.funcTohex(@shang)+@str return @str end while (@shang>15) begin set @i=@shang set @shang=@i/16 set @yushu=@i%16 if (@shang<=15) begin set @str=dbo.funcTohex(@yushu)+@str set @str=dbo.funcTohex(@shang)+@str break end else begin set @str=dbo.funcTohex(@yushu)+@str end end return @str end alter function funcToHex(@in int) returns varchar(1) as begin declare @str varchar(1) select @str=case @in when 0 then '0' when 1 then '1' when 2 then '2' when 3 then '3' when 4 then '4' when 5 then '5' when 6 then '6' when 7 then '7' when 8 then '8' when 9 then '9' when 10 then 'A' when 11 then 'B' when 12 then 'C' when 13 then 'D' when 14 then 'E' when 15 then 'F' end return @str end Go F.E.: select dbo.funcIntToHex(5201314) 结果为:4F5DA2
不行呀,用了select cast(16 as varbinary) 之后用RIGHT函数结果是空的…
returns varchar(20)
as
begin
declare @i int
declare @shang int,@yushu int
declare @str varchar(100)
set @shang=@k/16
set @yushu=@k%16
set @str=dbo.funcTohex(@yushu)
if @shang<15
begin
set @str=dbo.funcTohex(@shang)+@str
return @str
end
while (@shang>15)
begin
set @i=@shang
set @shang=@i/16
set @yushu=@i%16
if (@shang<=15)
begin
set @str=dbo.funcTohex(@yushu)+@str
set @str=dbo.funcTohex(@shang)+@str
break
end
else
begin
set @str=dbo.funcTohex(@yushu)+@str
end
end
return @str
end
alter function funcToHex(@in int)
returns varchar(1)
as
begin
declare @str varchar(1)
select @str=case @in
when 0 then '0'
when 1 then '1' when 2 then '2'
when 3 then '3'
when 4 then '4'
when 5 then '5'
when 6 then '6'
when 7 then '7'
when 8 then '8'
when 9 then '9'
when 10 then 'A'
when 11 then 'B'
when 12 then 'C'
when 13 then 'D'
when 14 then 'E'
when 15 then 'F'
end
return @str
end
Go
F.E.:
select dbo.funcIntToHex(5201314)
结果为:4F5DA2
之后用RIGHT函数结果是空的…