본문 바로가기
Database/Oracle

[ORACLE] HEXTORAW() 함수 완전 정복 : 16진수 → RAW 변환 실무 가이드

by Papa Martino V 2025. 6. 6.
728x90

오라클 HEXTORAW() 함수 완전 정복: 16진수 → RAW 변환 실무 가이드
[Oracle] HEXTORAW

1. HEXTORAW() 함수란?

Oracle의 HEXTORAW() 함수는 16진수 문자열(Hexadecimal string)을 RAW 데이터 타입으로 변환하는 함수입니다. 이 함수는 바이너리 데이터를 다룰 때 주로 사용되며, 암호화 키 처리, 바이너리 비교, BLOB 저장 등에서 활용됩니다.

2. 함수 문법

HEXTORAW(hex_string)
  • hex_string: 짝수 길이의 16진수 문자열 (예: '4 F2 A')
  • 반환값: RAW 데이터

3. 기본 사용 예제

예제 1: 16진수를 RAW로 변환

SELECT HEXTORAW('48656C6C6F') AS raw_value FROM dual;

결과: 'Hello'에 해당하는 ASCII 코드 16진 값을 RAW 타입으로 반환

예제 2: BLOB 저장을 위한 RAW 변환

INSERT INTO secure_data (id, binary_col)
VALUES (1, HEXTORAW('4A6F686E446F65'));

'JohnDoe'를 HEX로 인코딩하여 RAW 칼럼에 저장

4. HEXTORAW vs RAWTOHEX

함수 입력 출력 설명
HEXTORAW() 16진수 문자열 RAW HEX → RAW 변환
RAWTOHEX() RAW 16진수 문자열 RAW → HEX 변환

5. 실무 활용 사례

  • 암호화 키를 RAW 형식으로 저장할 때
  • API 토큰이나 인증 정보를 RAW 컬럼에 저장
  • 이미지나 파일 헤더를 16진수로 추출해 비교
  • 시스템 간 RAW 데이터 교환 시 중간 변환

6. 주의사항

  • 입력 문자열은 반드시 짝수 자릿수여야 함 (예: '4F2A' → OK, '4F2' → 오류)
  • 문자열 내에 유효하지 않은 16진수 문자가 있으면 오류 발생
  • VARCHAR2 타입으로 전달된 문자열이어야 함

7. PL/SQL 예제

DECLARE
  v_raw RAW(50);
BEGIN
  v_raw := HEXTORAW('414243'); -- 'ABC'에 해당
  DBMS_OUTPUT.PUT_LINE(RAWTOHEX(v_raw));
END;

8. 파일 해시값 저장 처리 예제

CREATE TABLE file_hashes (
  file_id NUMBER,
  sha256_hash RAW(32)
);

INSERT INTO file_hashes (file_id, sha256_hash)
VALUES (1001, HEXTORAW('A7D3F5B9C42F8739F89A75D6E0D8E9F0D1A2B3C4D5E6F7A8B9C0D0E0F1A2B3C4'));

9. RAW 데이터 조건절에서의 활용

SELECT *
FROM file_hashes
WHERE sha256_hash = HEXTORAW('A7D3F5B9C42F8739F89A75D6E0D8E9F0D1A2B3C4D5E6F7A8B9C0D0E0F1A2B3C4');

10. 유관 함수와 함께 쓰는 전략

  • RAWTOHEX(): 변환 결과를 사람이 읽을 수 있는 HEX로 출력
  • UTL_ENCODE.BASE64_ENCODE: RAW → BASE64로 인코딩
  • TO_LOB(): RAW 데이터를 BLOB으로 변환

11. 마무리

Oracle의 HEXTORAW() 함수는 보안, 파일 처리, 시스템 통합 등 다양한 분야에서 핵심적인 역할을 합니다. 특히 HEX와 RAW 간의 변환이 필요한 경우, 이 함수를 통해 SQL 내에서 손쉽게 데이터 전환이 가능하며, 관련 함수들과 함께 사용하면 더욱 유연한 데이터 처리를 구현할 수 있습니다.

출처 및 참고 자료

  • Oracle 공식 문서: https://docs.oracle.com/en/database/
  • Oracle 21c SQL Language Reference
  • Oracle UTL_ENCODE 및 DBMS_CRYPTO 패키지 문서
  • 실제 보안 데이터 처리 프로젝트 사례
728x90