SQL> select to_char(393221,'xxxxxx') from dual;TO_CHAR(393221
--------------
  60005SQL>

解决方案 »

  1.   

    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;
    /select utl_raw.bit_and(to_base(393221,2),'11011') from dual;
      

  2.   

    SQL> select utl_raw.bit_and(trim(to_char('414981','xxxxxx')),'11011') from dual;UTL_RAW.BIT_AND(TRIM(TO_CHAR('414981','XXXXXX')),'11011')
    --------------------------------------------------------------------------------
    001001