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;
/
SQL> select to_hex(100) from dual;
SQL> select to_dec('64') from dual;
- 강좌 URL : http://www.gurubee.net/lecture/4287
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.