전문가를 위한 오라클 데이터베이스 아키텍처 (2014년)
이진 문자열: RAW 타입 0 0 90,586

by 구루비스터디 데이터타입 DATATYPE RAW 타입 [2018.09.27]


이진 문자열 : RAW 타입

  • 오라클은 텍스트뿐만 아니라 이진 데이터도 저장가능
  • 데이터베이스에 의해 텍스트로로 인식되지 않아야 하고 캐릭터 셋 변환 하지말아야 문자열은 이진 데이터 타입으로 저장가능


오라클은 이진 데이터를 저장하기 위해서 세가지 타입을 지원
  • RAW 타입 : 2000바이트 RAW 데이터를 저장 하는데 적합
  • BLOB 타입 : 큰 크기의 이진 데이터를 지원
  • LONG RAW 타입 : 이전 버전과 호환을 위해서 지원(새로운 애플리케이션에서는 사용하지 않는것이 좋다)



-- 이진 문자열

SQL> drop table t;

테이블이 삭제되었습니다.

SQL>
SQL> create table t ( raw_data raw(16));

테이블이 생성되었습니다.

SQL>
SQL> insert into t values(sys_guid());

1 개의 행이 만들어졌습니다.

SQL>
SQL> select * from t;

RAW_DATA
--------------------------------
1D43917F3BB7485CA88CEAFC964BC184

SQL> select dump(raw_data,16) from t;

DUMP(RAW_DATA,16)
--------------------------------------------------------------------------

Typ=23 Len=16: 1d,43,91,7f,3b,b7,48,5c,a8,8c,ea,fc,96,4b,c1,84


SQL> insert into t values('abcdef');

1 개의 행이 만들어졌습니다.

SQL> insert into t values('abcdefgh');
insert into t values('abcdefgh')
                           *
1행에 오류:
ORA-01465: 16진수의 지정이 부적합합니다

- HEXTORAW : 16진수 문자열을 RAW 타입으로 변환
- RAWTOHEX : RAW 데이터를 16진수 문자열로 변환

SQL> select rawtohex(raw_data) from t;

RAWTOHEX(RAW_DATA)
----------------------------------------------------------------
1D43917F3BB7485CA88CEAFC964BC184
ABCDEF


-- 명시적인 변환 
SQL> insert into t values(hextoraw('abcdef'));

1 개의 행이 만들어졌습니다.

-- 그렇다면 abcdefg 값을 hex값으로 변환하여 넣음
SQL> delete from t;

6 행이 삭제되었습니다.

SQL> insert into t values(rawtohex('abcdefg'));

1 개의 행이 만들어졌습니다.

SQL> select * from t;

RAW_DATA
--------------------------------
61626364656667


"데이터베이스 스터디모임" 에서 2014년에 "전문가를 위한 오라클 데이터베이스 아키텍처 " 도서를 스터디하면서 정리한 내용 입니다.

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

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

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

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