您的位置:首页 > 其它

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

2012-10-22 10:45 316 查看
CONNECT BY可用于生成序列,下面的函数就是利用CONNECT BY的这一特性实现的二进制到十进制的转行函数。

create or replace function bintodec(bstr in varchar2) return varchar2 is
-- ********************************************************
--* 文件名:BinToDec.sql
-- * 版本:1.0
-- * 用途:利用connect by实现二进制向十进制的转换
-- * 参数:
-- * bStr: 待转换的二进制串
-- * 作者:zhanglt(20120317)
-- * 修改者:
-- ********************************************************
v_vc_sourstr varchar2(4000);
v_vc_rtnstr  varchar2(4000);
begin
v_vc_sourstr := trim(bstr);
select sum(factor)
into v_vc_rtnstr
from (select substr(v_vc_sourstr, rownum, 1) *
power(2, length(v_vc_sourstr) - rownum) factor
from dual
connect by rownum <= length(v_vc_sourstr));
return v_vc_rtnstr;
exception
when others then
return null;
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: