欢迎使用icdoor.com,谢谢您的参与
« Oracle数据库业务优化心得 丁中:IPTV中间件重点在终端 »

ORACLE中用一条SQL实现其它进制到十进制的转换

对其它进制可以根据例子将power的底数改成相应的进制就可以了。

  本文只是一个例子,大家可以把它封装成一个通用函数进行实用。

  大家在试的时候将里面相应的其它进制的数值换成自己的数据就可以了(有多处)。

  -----二进制转换十进制-----------------
  selectsum(data1)
  from(selectsubstr('1101',rownum,1)*power(2,length('1101')-rownum)data1
  fromdual
  connectbyrownum<=length('1101'))

  -----八进制转换十进制-----------------
  selectsum(data1)
  from(selectsubstr('1101',rownum,1)*power(8,length('1101')-rownum)data1
  fromdual
  connectbyrownum<=length('1101'))

  -----十六进制转换十进制-----------------
  selectsum(data1)
  from(select(CASEupper(substr('2D',rownum,1))
  WHEN'A'THEN'10'
  WHEN'B'THEN'11'
  WHEN'C'THEN'12'
  WHEN'D'THEN'13'
  WHEN'E'THEN'14'
  WHEN'F'THEN'15'
  ELSEsubstr('2D',rownum,1)
  END)*power(16,length('2D')-rownum)data1
  fromdual
  connectbyrownum<=length('2D'))

出处:软件测试时代http://www.testage.net/

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright 2003-2007 www.icdoor.com. All Rights Reserved.京ICP备05039017号.Powered By Z-Blog.Top