利用CONNECT BY实现二进制到十进制的转换

CONNECT BY可用于生成序列,下面的函数就是利用CONNECT BY的这一特性实现的二进制到十进制的转行函数。

 

 1 create or replace function bintodec(bstr in varchar2) return varchar2 is
 2   -- ********************************************************
 3   --* 文件名:BinToDec.sql
 4   -- * 版本:1.0
 5   -- * 用途:利用connect by实现二进制向十进制的转换
 6   -- * 参数:
 7   -- * bStr: 待转换的二进制串
 8   -- * 作者:zhanglt(20120317)
 9   -- * 修改者:
10   -- ********************************************************
11   v_vc_sourstr varchar2(4000);
12   v_vc_rtnstr  varchar2(4000);
13 begin
14   v_vc_sourstr := trim(bstr);
15   select sum(factor)
16     into v_vc_rtnstr
17     from (select substr(v_vc_sourstr, rownum, 1) *
18                  power(2, length(v_vc_sourstr) - rownum) factor
19             from dual
20           connect by rownum <= length(v_vc_sourstr));
21   return v_vc_rtnstr;
22 exception
23   when others then
24     return null;
25 end;

 

 

 

posted @ 2012-10-22 10:45  原想  阅读(170)  评论(0编辑  收藏  举报