巧用一条SQL 实现其它进制到十进制转换

http://tech.ddvip.com   2008年02月19日    社区交流

本文详细介绍巧用一条SQL 实现其它进制到十进制转换

  问:怎样实现ORACLE中用一条SQL实现其它进制到十进制的转换?

  答:具体示例如下:

  -----二进制转换十进制-----------------

  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'))

  注释:

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

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

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

来源:豆豆网转载    作者:赛迪网 han    责编:豆豆技术应用

正在加载评论...