金融

淺議Oracle中的進制轉換

2019-06-03 17:22:06来源:励志吧0次阅读

月经过多贫血吃什么好
月经过多如何补血
月经过多中医治疗

  进制转换是开发中经常需要用到的,本文简单介绍几种常用的进制转化方法.

  一 16進制轉換為10進制

  可以通过to_number函数实现

  SQL select to_number(’19f’,’xxx’) from dual;

  TO_NUMBER(’19F’,’XXX’)

  ----------------------

  415

  SQL select to_number(’f’,’xx’) from dual;

  TO_NUMBER(’F’,’XX’)

  -------------------

  15

  二 10进制转换为16进制

  可以通过to_char函数转换

  SQL select to_char(123,’xxx’) from dual;

  TO_C

  ----

  7b

  SQL select to_char(4567,’xxxx’) from dual;

  TO_CH

  -----

  11d7

  三 2进制转换为10进制

  从Oracle9i开始,提供函数bin_to_num进行2进制到10进制的转换

  SQL select bin_to_num(1,1,0,1) a,bin_to_num(1,0) b from dual;

  A B

  ----- ----------

  13 2

  SQL select bin_to_num(1,1,1,0,1) from dual;

  BIN_TO_NUM(1,1,1,0,1)

  ---------------------

  29

  四 通过自定义函数实现进制转换

  以下函数来自AskTom站,是Tom给出的例子,供参考:

  create or replace function to_base( p_dec in number, p_base in number )

  return varchar2

  is

  l_str varchar2(255) default NULL;

  l_num number default p_dec;

  l_hex varchar2(16) default ’ABCDEF’;

  begin

  if ( trunc(p_dec) p_dec OR p_dec 0 ) then

  raise PROGRAM_ERROR;

  end if;

  loop

  l_str := substr( l_hex, mod(l_num,p_base)+1, 1 ) || l_str;

  l_num := trunc( l_num/p_base );

  exit when ( l_num = 0 );

  end loop;

  return l_str;

  end to_base;

  /

  create or replace function to_dec

  ( p_str in varchar2,

  p_from_base in number default 16 ) return number

  is

  l_num number default 0;

  l_hex varchar2(16) default ’ABCDEF’;

  begin

  for i in 1 .. length(p_str) loop

  l_num := l_num * p_from_base + instr(l_hex,upper(substr(p_str,i,1)))-1;

  end loop;

  return l_num;

  end to_dec;

  /

  show errors

  create or replace function to_hex( p_dec in number ) return varchar2

  is

  begin

  return to_base( p_dec, 16 );

  end to_hex;

  /

  create or replace function to_bin( p_dec in number ) return varchar2

  is

  begin

  return to_base( p_dec, 2 );

  end to_bin;

  /

  create or replace function to_oct( p_dec in number ) return varchar2

  is

  begin

  return to_base( p_dec, 8 );

  end to_oct;

  / 查看本文来源

男人换发型什么心理 男人换新发型等于换了个“头”
海安警方捣毁二八杠赌博窝点当场查获赌资10余万元
蟹味菇宝宝能吃吗 宝宝吃蟹味菇有什么好处
分享到:
  • 友情链接
  • 合作伙伴