34,594
社区成员
发帖
与我相关
我的任务
分享
declare @x varbinary(255)
select @x=0x1ab38e
select lower('0x'+dbo.Apq_ConvertVarBinary_HexStr(@x)) 'result'
result
----------
0x1ab38e
-- 函数Apq_ConvertVarBinary_HexStr()代码如下
create FUNCTION dbo.Apq_ConvertVarBinary_HexStr
(
@bin varbinary(1000)
)
RETURNS varchar(1000)
AS
BEGIN
DECLARE @Return varchar(1000), @ind int, @byte binary(1),@byte1 int, @byte2 int;
SELECT @Return = '',@ind = 1;
WHILE ( @ind <= datalength(@bin) )
BEGIN
SELECT @byte = substring(@bin, @ind, 1);
SET @byte1 = @byte / 16
IF(@byte1 >= 10)
SELECT @Return = @Return +
CASE @byte1
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
ELSE
SELECT @Return = @Return + convert(char(1),@byte1)
SET @byte2 = @byte % 16
IF(@byte2 >= 10)
SELECT @Return = @Return +
CASE @byte2
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
ELSE
SELECT @Return = @Return + convert(char(1),@byte2)
SELECT @ind = @ind + 1;
END
RETURN @Return;
END
GO