控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

SQL 进制间如何转换

作者:佚名 出处:互联网 2011年07月15日 阅读:

SQL 进制间如何转换

create function inttohex(@int10 int) 

returns varchar(8) 

begin

    declare @int10 int

    declare @str16 nvarchar(8) 

    set @str16=''

  

    if(@int10>0) 

    begin

        while @int10>0 

        begin

            set @str16=substring('0123456789ABCDEF',@int10%16+1,1)+@str16 

            set @int10=@int10/16 

        end

    end

        else

        begin

            set @str16='0'

        end

    return @str16 

end

  

  

--16进制转10进制 

create function hextoint(@str16 varchar(8))  

returns int 

begin 

  

    declare @int10 int 

    declare @i int     

    set @int10=0  

    set @i=1  

  

    while @i<=len(@str16)  

    begin 

        set @int10=@int10+ 

            convert(int, 

                (case   when substring(@str16,@i,1)<='9' then substring(@str16,@i,1) 

                    when substring(@str16,@i,1)<='A' then '10'

                    when substring(@str16,@i,1)<='B' then '11'

                    when substring(@str16,@i,1)<='C' then '12'

                    when substring(@str16,@i,1)<='D' then '13'

                    when substring(@str16,@i,1)<='E' then '14'

                    when substring(@str16,@i,1)<='F' then '15' end )) * power(16,len(@str16)-@i)  

        set @i=@i+1 

    end

    return @int10  

end

  

  

CREATE FUNCTION hextoint(@s varchar(16)) 

RETURNS bigint

AS

BEGIN

--作者:pbsql 

--参数不得含'0'~'9'、'a'~'f'、'A'~'F'之外的任意字符(首尾空格除外),否则返回0 

  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 

  

  

--10进制转2进制 

create function f_int2bin(@i int) 

returns varchar(1000) 

as

begin

    declare @s varchar(1000) 

    set @s=''

    while @i>0 

        select @s=cast(@i%2 as varchar) @s 

            ,@i=@i/2 

    return(@s) 

end

go 

  

  

--16进制字符转为2进制字符串 

CREATE FUNCTION hextobinary(@str CHAR(1)) 

RETURNS VARCHAR(4) 

AS

BEGIN

    DECLARE @var VARCHAR(4) 

    SET @var=CASE

        WHEN @str='0' THEN '0000'

        WHEN @str='1' THEN '0001'

        WHEN @str='2' THEN '0010'

        WHEN @str='3' THEN '0011'

        WHEN @str='4' THEN '0100'

        WHEN @str='5' THEN '0101'

        WHEN @str='6' THEN '0110'

        WHEN @str='7' THEN '0111'

        WHEN @str='8' THEN '1000'

        WHEN @str='9' THEN '1001'

        WHEN @str='A' THEN '1010'

        WHEN @str='B' THEN '1011'

        WHEN @str='C' THEN '1100'

        WHEN @str='D' THEN '1101'

        WHEN @str='E' THEN '1110'

        WHEN @str='F' THEN '1111'

    END

    RETURN @var     

END 

  

  

--16进制字符串转为2进制字符串 

DECLARE @str VARCHAR(50) 

DECLARE @res VARCHAR(500) 

DECLARE @i INT

SET @i=1 

SET @str='80'

SET @res=''

WHILE @i,3 

BEGIN

    SET @res=@res+dbo.hextobinary(substring(@str,@i,1)) 

    SET @i=@i+1 

END 

PRINT @res 

  

  

  

--10进制转为16进制 

DECLARE 

@binary varbinary(255),  

@str_return varchar(255)  

  

SELECT 

@binary = CONVERT(varbinary(255),29327795562177529)  

  

EXEC master.dbo.xp_varbintohexstr @binary, @str_return OUTPUT 

SELECT 

结果 = reverse(@str_return)

 

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统