隨筆 - 6  文章 - 129  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(467)

          文章檔案(423)

          相冊

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827240
          • 排名 - 49

          最新評論

          閱讀排行榜

          評論排行榜

          轉:http://www.eygle.com/faq/Faq_convert.htm
          1.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

          2.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

          3.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

          3.進制轉換也可以通過自定義函數實現
          以下函數來自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 '0123456789ABCDEF';
          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 '0123456789ABCDEF';
          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;
          /

          -The End-





          posted on 2010-05-18 09:44 Ke 閱讀(532) 評論(0)  編輯  收藏 所屬分類: oracle
          主站蜘蛛池模板: 琼海市| 阳西县| 双江| 石狮市| 屯门区| 句容市| 六枝特区| 江油市| 镇沅| 延庆县| 建昌县| 玉环县| 防城港市| 都江堰市| 长乐市| 乾安县| 杭锦后旗| 松桃| 阿勒泰市| 岳池县| 九寨沟县| 荥阳市| 济南市| 漾濞| 上饶市| 武安市| 炉霍县| 平阴县| 迭部县| 阜宁县| 兴仁县| 广德县| 遵义市| 卢龙县| 福州市| 荣成市| 精河县| 梅河口市| 驻马店市| 万全县| 多伦县|