오라클 성능 트러블슈팅의 기초 (2012년)
TO_DEC, TO_HEX 0 0 20,060

by 구루비스터디 TO_DEC TO_HEX PLSQL 패키지 [2023.09.06]


TO_DEC, TO_HEX

  • 숫자의 진수 변환을 수행하는 가장 쉬운 방법으로 TO_CHAR, TO_NUMBER함수를 사용하는 것이다.
 
SQL> select to_char(100, 'xxxxxxxxxx') from dual;
SQL> select to_number('64','xxxxxxxxxx') from dual;


  • 진수 변환을 위해 톰 카이트의 라이브러리를 이용하는 것도 좋다.
 
-- 진수 변환을 위한 핵심 함수 
SQL> 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 ( 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;
    /
    

-- 10진수로 변환
SQL> create or replace function to_dec(p_str in varchar2, p_from_base in number default 16) return number
    is 
      l_num number default 0;
      l_hex varchar2(16) default '0123456789ABCDEF';
      
    begin
    
      for i in 1 .. length(p_str) loop
        l_num := l_num*p_from_base + instr(l_hex, upper(substr(p_str,i,1))) -1;
      end loop;
    return l_num;

  end to_dec;
  /

  
-- 16진수로 변환
SQL> create or replace function to_hex(p_dec in number) return varchar2
    is 
    begin
      return to_base(p_dec, 16);
    end to_hex;
    /

    
--2진수로 변환
SQL> create or replace function  to_bin(p_dec in number) return varchar2
    is 
    begin
      return to_base(p_dec,2);
    end to_bin;
  /

  
-- 8진수로 변환
SQL> create or replace function to_oct(p_dec in number) return varchar2
    is
    begin
      return to_base(p_dec, 8);
    end to_oct;
    /


  • TO_HEX, TO_DEC 함수를 이용하면 TO_CHAR, TO_NUMBER함수를 이용한 것과 동일한 진수 변환을 진행할 수 있다.
 
  SQL> select to_hex(100) from dual;
  SQL> select to_dec('64') from dual;

"데이터베이스 스터디모임" 에서 2012년에 "오라클 성능 트러블슈팅의 기초 " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4287

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입