VARCHAR2 란?

오라클에는 문자열을 표현하기 위한 VARCHAR2 라는 데이타 유형이 오래전부터 제공되어 왔습니다.


VARCHAR2 는 문자열의 바이트를 기준으로 하기 때문에 ASCII Code 에 있는 문자(!Byte)인지 한글(2BYTE)인지에 따라 저장할 수 있는 단어수가 달라집니다.

정확히는 오라클의 DBMS 캐릭터 인코딩에 따라서 달라지며 Encoding 이 AL32UTF8 아닌 KO16KSC5601 이나 KO16MSWIN949 등일 경우입니다.

SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';

KO16MSWIN949 
CODE


즉 20 바이트자리 VARCHAR2 일 경우 Ascii 코드표에 있는 문자라면 20자를 넣을 수 있지만 한글만 넣는다면 10자밖에 못 넣게 되며 한글과 영어를 섞어 쓸 경우 한글이 몇 자인지에 따라 달라지게 됩니다.


이런 특징은 개발자를 매우 혼란스럽게 해서 VARCAHR2 타입에 넣을때는 자리수 확인을 한글과 영어로 나눠서 입력 가능한 길이를 체크하는등 매우 번거로운 작업을 수행해야 합니다.


NVARCHAR2

이런 문제를 해결하고자 오라클에서는 NVARCHAR2 라는 새로운 자료형을 제공하고 있습니다.

NVARCHAR2를 사용할 경우 문자열의 바이트가 아닌 문자 갯수 자체를 길이로 취급하므로 한글, 영어, 기타 외국어 여부와 상관없이 처리할 수 있습니다.


같이 보기

Ref