Sybase 中如何将VarBinary型的数据转换为十六进制的字符串?十万火急啊!加分
我的数据库中有一个VarBinary字段长度为12,想写一段SQL能返回其对应的十六进制字符串,返回结果要是字符型的!!! 问题点数:100、回复次数:3Top
1 楼William3AndJenny2(爱莲说)回复于 2006-07-02 11:34:21 得分 0
自已顶一下吧!Top
2 楼LouisXIV(夜游神)回复于 2006-07-02 12:52:34 得分 0
刚写的一个MS-SQL(T-SQL)下可以通过,你自己改写成符合Sybase语法的语句好了
declare @a binary(12)
select @a=128
declare @b int
select @b=cast(@a as integer)
declare @HexStr varchar(10)
select @HexStr=''
declare @Quotient int
while @b/16<>0
begin
select @Quotient=@b/16
select @HexStr=@HexStr+
case @Quotient
when 10 then 'A'
when 11 then 'B'
when 12 then 'C'
when 13 then 'D'
when 14 then 'E'
when 15 then 'F'
when 16 then '10'
else
rtrim(@Quotient)
end
select @b=@b-@quotient*16
end
select @HexStr=@HexStr+ case rtrim(@b % 16)
when 10 then 'A'
when 11 then 'B'
when 12 then 'C'
when 13 then 'D'
when 14 then 'E'
when 15 then 'F'
when 16 then '10'
else
rtrim(@b % 16)
end
select @HexStr
Top
3 楼William3AndJenny2(爱莲说)回复于 2006-07-03 16:16:38 得分 0
不行啊!这段SQL只能转换255以内的我要的是像在 SQL Server 中扩展存存储过程 XP_VarBinToHexStr 的功能!如下面的:
Declare @tempBin VarBinary(300), @tempStr VarChar(300)
Select @tempBin = 0x548aded85
Exec Master..XP_VarBinToHexStr @tempBin, @tempStr Out
Select @tempStr
返回为:0x548aded85Top




