SQL实现16进制到10进制的转换

原创 2015年07月07日 10:38:11

SQL 实现对 16进制 到10进制的转换

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 distinct (dbo. f_hex_dec(substring (ExETCTermCode, 8,5 ))) as ExETCTermCode , ExRoadID,ExStationID ,ExLaneID from tb_LaneExList201406 where ExETCTermCode <>'0' order by ExRoadID ,ExStationID, ExLaneID


函数解释: RTRIM 、LTRIM 去除字符串中的左右空白; REVERSE 翻转字符串;CHARINDEX(S1,S2,index)寻找并返回S1在S2中的位置,index 为开始寻找位置,不填,负数或0均默认从S2开头位置寻找


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Sql server实现十六进制和十进制的转换

写着玩玩-- 十六进制转十进制Create    function hextoint(@h varchar(8))returns bigint begin-- select dbo.hextoint(...
  • szliszt
  • szliszt
  • 2008年02月22日 01:06
  • 978

MS SQL Server10进制和16进制之间的互相转换

MS SQL Server10进制和16进制之间的互相转换

MSSQL 关于16进制与字符串以及10进制的简单转换,以及SQL的16进制的截取

关于数据库的16进制类型转换,其实在数据库里面没有16进制这个类型,它用的都是2进制类型varbinary存储16进制的数据,特别是要转成10进制的时候,那就只能16进制->2进制->10进制。   ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

通过XShell 的SSH隧道功能, 让外网访问内网网站

通过SSH让外网访问内网网站

ZeroMQ多线程使用规则

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE ...

2 8 10 16进制转换

  • 2014年09月25日 19:45
  • 3KB
  • 下载

字符转换(2,8,10,16进制,ASCII码)

罗列了一些用到的,各进制 以及 ASCII 间的转换,记录备忘 一,先说说 2,8,10 ,16 各进制之间的转化 System.Convert类中提供了较为全面的各种类型、数值之间的转换...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL实现16进制到10进制的转换
举报原因:
原因补充:

(最多只允许输入30个字)