본문 바로가기

프로그램

CHAR와 VARCHAR TYPE의 차이

출처 : 오라클 홈페이지 (http://kr.forums.oracle.com)
         OTN 디스커션 포럼 » 새로운 Technical Bulletin » Database 
         주소 : http://kr.forums.oracle.com/forums/thread.jspa?threadID=464142&tstart=1025

남음과 남지 않음의 차이~~
=====================================================================================

CHAR와 VARCHAR2 TYPE의 차이
===========================


Purpose
-------
Varchar2 type과 Char type의 차이를 이해한다.


Explanation
-----------

CHAR와 VARCHAR2(VARCHAR)의 차이를 간단히 설명한다면 CHAR DATATYPE은
FIXED LENGTH CAHRACTER STRING을 저장합니다.
만약 TABLE이 CHAR COLUMN을 갖고 CREATE될때 COLUMN LEGTH는 BYTES로
1에서 255까지의 DATA를 저장할 수 있읍니다. COLUMN길이가 10 으로 정의
었을때 한번 INSERT 문장을 통해 5 BYTES를 입력하였다면 나머지 5 BYTES는
SPACE 처리되어 그 DATA의 SIZE는 10 BYTE가 됩니다.

SQLPLUS의 VSIZE함수를 통해 알아보면 다음과 같습니다.

SQL> SELECT VSIZE(column_name) FROM table_name;

column_name
------------
10
10

반면에 VARCHAR2 DATATYPE은 VARIABLE-LENGTH CHARACTER STRINGS을 저장합
니다. 만약 TABLE이 VARCHAR2 COLUMN을 갖고 CREATE될때 COLUMN LENGTH 1에서
2000 BYTES까지의 DATA를 저장할수 있습니다. COLUMN길이가 10 으로 정의되었
을때 번 INSERT 문장을 통해 5 BYTES를 입력하였다면 나머지 5 BYTES는
NULL 처리되어 그 DATA의 SIZE는 5 BYTE가 됩니다.

SQLPLUS의 VSIZE함수를 통해 알아보면 다음과 같습니다.

SQL> SELECT VSIZE(column_name) FROM table_name;

column_name
------------
5
5

위와 같은 특징을 갖고 있기 때문에 정확히 구분하여 사용해야만 SPACE를
절약할수 있고 ERROR를 방지할수 있습니다.

만약 사용자가 COMPARISON상에서 ANSI 호환성을 요구한다면 를 DATA TYPE를
CHAR로 선언해야 합니다. 즉 나머지공간(TRAILING BLANK)이 STRING
COMPARISONS에서 중요한다면 CHAR로 해야합니다. 그런 특수한 경우 제외한
나머지 경우에는 VARCAHR2로 사용하는 것이 SPACE가 절약 될 것 입니다.


Reference Document
------------------
Oracle SQL Reference Guide

'프로그램' 카테고리의 다른 글

target(href) 타겟사용법  (0) 2008.08.17
색상코드표  (0) 2008.08.16
Commons-Fileupload 1.2  (0) 2008.08.11
톰고양이 context reload 빨리하는 법...  (0) 2008.08.08
[링크] XML-RPC Howto (KLDP)  (0) 2008.07.23