首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

问个小疑点,SQL Server里面有十六进制转化为十进制的函数吗

2012-01-19 
问个小问题,SQL Server里面有十六进制转化为十进制的函数吗???[解决办法]declare @b varbinary(20)set @b

问个小问题,SQL Server里面有十六进制转化为十进制的函数吗
???

[解决办法]

declare @b varbinary(20)
set @b=0XA
select cast(@b as int)

--result
-----------
10

(1 row(s) affected)
[解决办法]

binary 为二进制类型

二进制常量以 0x(一个零和小写字母x)开始,后面跟着位模式的十六进制表示。例如,0x2A 表示十六进制的值 2A
[解决办法]
--引用
CREATE FUNCTION dbo.f_hex_dec(@s varchar(16))
RETURNS bigint
AS
BEGIN

DECLARE @i int,@result bigint
SELECT @i=0,@result=0,@s=RTRIM(LTRIM(UPPER(REVERSE(@s))))
WHILE @i <LEN(@s)
BEGIN
IF SUBSTRING(@s,@i+1,1) not between '0 ' and '9 ' and SUBSTRING(@s,@i+1,1) not between 'A ' and 'F '
BEGIN
SELECT @result=0
break
END
SELECT @result=@result+(CHARINDEX(SUBSTRING(@s,@i+1,1), '0123456789ABCDEF ')-1)*POWER(16,@i),@i=@i+1
END
RETURN @result
END
GO


--
select dbo.f_hex_dec( 'A ')


--res

10

热点排行