CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  高级技术

oracle中是否有可將數字轉為二進制的涵數或方法!!!!

楼主hopes_chen(sunlink)2004-09-04 13:27:53 在 Oracle / 高级技术 提问

oracle中是否有可將數字轉為二進制的涵數或方法!!!! 问题点数:0、回复次数:3Top

1 楼JeromeLiu(烛光)回复于 2004-09-04 13:50:53 得分 0

好像没有的Top

2 楼beckhambobo(beckham)回复于 2004-09-04 15:08:45 得分 0

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   (   p_dec   is   null   or   p_base   is   null   )    
  then  
  return   null;  
  end   if;  
  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  
  if   (   p_str   is   null   or   p_from_base   is   null   )  
  then  
  return   null;  
  end   if;  
  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;  
  /  
   
  how   to   use   them:  
   
  SQL>   select   to_bin(   123   )   bin,   to_hex(   123   )   hex,   to_oct(   123   )   oct   from   dual  
      2     /  
   
  BIN                           HEX                           OCT  
  ---------------   ---------------   ---------------  
  1111011                   7B                             173  
   
  SQL>    
  SQL>   select   to_dec(   '1111011',   2   )   base2,   to_dec(   '7B'   )   base16,  
      2                   to_dec('173',8)   base8  
      3         from   dual  
      4     /  
   
            BASE2           BASE16             BASE8  
  ----------   ----------   ----------  
                123                 123                 123  
   
  Top

3 楼chen_cyh(figer)回复于 2004-10-09 13:55:58 得分 0

好,收藏!Top

相关问题

  • oracle中的ROWID数据类型是自增字段用的吗?在SQL语句中它的表示方法?
  • 请问JAVA有没有,读取ORACLE表里字段的方法??解决就给分!!!
  • php连接oracle有几种方法呢?
  • php连接oracle有几种方法呢?
  • Oracle实践类型的输入方法?
  • ORACLE中空串的表示方法?
  • 谁有不安装Oracle客户连接Oracle 9i的方法??
  • Oracle的字符集
  • 再问:pb不安装Oracle客户连接Oracle 8的方法?给分100
  • 请教图片上传oracle数据库的方法(注意是oracle的)

关键词

  • null
  • dec
  • hex
  • bin
  • oct

得分解答快速导航

  • 帖主:hopes_chen

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo