日期:2014-05-17 浏览次数:20873 次
declare @num bigint set @num=-2161622263693857431
select convert(varbinary, @num)
/*
0xE200600101F3AD69
*/
--1.一开始这么转化,但是有问题,关键在于你的这个数太大,超出了int的范围
select cast(-2161622263693857431 as varbinary)
/*
0x1300000097520CFEFE9FFF1D
*/
--2.这样就行了,转化为bigint,在转为varbianry,但是这个不是字符串,所以还是不行
select cast(cast(-2161622263693857431 as bigint) as varbinary)
/*
0xE200600101F3AD69
*/
use 你的数据库
go
IF OBJECT_ID ('dbo.varbin2hexstr') IS NOT NULL
DROP FUNCTION dbo.varbin2hexstr
GO
--这个函数实现了把varbinary类型数据转化为varchar类型的数据
CREATE function varbin2hexstr(
@bin varbinary(max)
)returns varchar(max)
as
begin
declare @re varchar(max),@i int
select @re='',@i=datalength(@bin)
while @i>0
select @re=substring('0123456789ABCDEF',substring(@bin,@i,1)/16+1,1)
+substring('0123456789ABCDEF',substring(@bin,@i,1)%16+1,1)
+@re
,@i=@i-1
-- return('0x'+@re)
return @re
end
GO
--3.调用函数dbo.varbin2hexstr,把varbinary转为字符串,这样才行
select dbo.varbin2hexstr(cast(cast(-2161622263693857431 as bigint) as varbinary))
/*
E200600101F3AD69
*/