利用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;
简单做人 从容做事 快乐生活