oracle进制转换方法

2012-11-12
create or replace Function hextostr(v_str varchar2) Return Varchar2 
is
v_out Varchar2(4);
begin
  Select decode(lower(v_str),’0’,’0000’,
                      ’1’,’0001’,
                      ’2’,’0010’,
                      ’3’,’0011’,
                      ’4’,’0100’,
                      ’5’,’0101’,
                      ’6’,’0110’,
                      ’7’,’0111’,
                      ’8’,’1000’,
                      ’9’,’1001’,
                      ’a’,’1010’,
                      ’b’,’1011’,
                      ’c’,’1100’,
                      ’d’,’1101’,
                      ’e’,’1110’,
                      ’f’,’1111’)
  Into v_out From dual;                  
Return v_out;
end hextostr;
/
********************
转化为二进制
create or replace Function getstr(v_str varchar2) Return Varchar2
 is
v_out Varchar2(8000):=’’;
v_int Number:=1;
begin
  While v_int<length(v_str)
  Loop
  v_out:=v_out||hextostr(substr(v_str,v_int,1));
  v_int:=v_int+1;
  End Loop;
  Return v_out;
end getstr;
/
**************************
将二进制转化为10进制
Create Or Replace Function strtodec(v_str Varchar2) Return Number
Is 
v_int Number;
v_sum Number:=0;
Begin
For i In 1..length(v_str)
Loop
    v_int:=instr(v_str,’1’,i,1);
    If v_int>0 and substr(v_str,i,1)<>0 Then
    v_sum:=v_sum+power(2,length(v_str)-v_int);
    End If;
End Loop;
Return v_sum;
End;
/
分享到:
0
相关阅读
友情链接
© 2018 我考网 http://www.woexam.com 中国互联网举报中心 湘ICP备18023104号 京公网安备 11010802020116号
违法和不良信息举报:9447029@qq.com