"오라클 10진수 16진수 변환"의 두 판 사이의 차이
DB CAFE
(→TO_OCT() 10진수 변환) |
(→TO_OCT( ) 10진수 변환) |
||
100번째 줄: | 100번째 줄: | ||
</source> | </source> | ||
− | + | === 사용 예시 === | |
* TO_HEX, TO_DEC 함수를 이용하면 TO_CHAR, TO_NUMBER함수를 이용한 것과 동일함. | * TO_HEX, TO_DEC 함수를 이용하면 TO_CHAR, TO_NUMBER함수를 이용한 것과 동일함. | ||
<source lang=sql> | <source lang=sql> |
2024년 6월 23일 (일) 12:55 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 오라클 10진수 <=> 16진수 <=> 8진수 변환[편집]
- 가장 쉬운 방법으로 TO_CHAR, TO_NUMBER함수 사용
1.1 16진수 변환[편집]
select to_char(100, 'xxxxxxxxxx') from dual;
1.3 사용자 함수 이용[편집]
- Tom kite 라이브러리 이용
-- 진수 변환을 위한 핵심 함수
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;
/
1.4 TO_DEC() 10진수 변환[편집]
-- 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;
/
1.5 TO_HEX() 16진수 변환[편집]
-- 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;
/
1.6 TO_BIN( ) 2진수 변환[편집]
--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;
/
1.7 TO_OCT( ) 10진수 변환[편집]
-- 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;
/
1.8 사용 예시[편집]
- TO_HEX, TO_DEC 함수를 이용하면 TO_CHAR, TO_NUMBER함수를 이용한 것과 동일함.
-- 16진수로 변환
select to_hex(100) from dual;
-- 10진수로 변환
select to_dec('64') from dual;