CUBRID는 네 종류의 문자 스트링(character string) 타입을 지원한다.
다음은 문자 스트링 타입을 사용할 때 적용되는 규칙이다.
길이(Length)
CHAR나 VARVAHR 타입에서는 문자 스트링의 크기(바이트)를 지정하며, NCHAR나 NCHAR VARYING 타입에서는 문자의 개수를 지정한다.
입력된 문자 스트링이 지정된 길이를 초과하는 경우, 초과 부분이 공백 문자(ASCII로 32)인 경우에는 이를 절삭하고, 초과 부분이 공백 문자가 아닌 일반 문자인 경우에는 에러를 발생시킨다. 이때, 지정된 길이에 맞도록 데이터를 자르지(truncate) 않음에 유의한다.
또한, CHAR와 NCHAR와 같은 고정 길이 문자 스트링 타입에서는 선언한 길이에 고정되므로, 문자를 저장할 때 오른쪽에 공백 문자(trailing space)를 채운다. 한편, VARCHAR 또는 NCHAR VARYING과 같은 가변 길이 문자 스트링 타입에서는 공백 문자를 채우지 않고 실제 입력된 문자 스트링만큼 저장한다.
CHAR 또는 VARCHAR 타입에서 지정할 수 있는 최대 길이는 1,073,741,823이며, NCHAR 또는 NCHAR VARYING 타입에서 지정할 수 있는 최대 길이는 536,870,911이다. 또한, CSQL 문장으로 한 번에 입력 또는 출력할 수 있는 최대 크기는 8192KB이다.
문자 세트(Character Set, charset)
문자 세트(문자 집합)는 특정 문자(symbol)를 컴퓨터에 저장할 때, 어떠한 코드로 인코딩할 것인지에 대한 규칙이 정의된 집합을 의미한다. CUBRID가 지원하는 문자 세트는 다음과 같으며, CUBRID_LANG 환경 변수로 설정할 수 있다. 그 외의 문자 세트(예: UTF-8)인 경우 데이터 저장은 가능하나, 문자 함수 및 LIKE 검색을 지원하지 않는다.
문자 세트 |
CUBRID_LANG |
---|---|
8비트 ISO 8859-1 Latin |
en_US |
KSC 5601-1992 (EUC-KR) |
ko_KR.euckr |
위 문자 세트의 모든 문자가 문자 스트링에 포함될 수 있다(NULL 문자는 '\0'로 나타낸다).
문자 세트의 정렬(Collating Character Set)
콜레이션(collation)은 어느 문자 세트가 설정된 상태에서 데이터베이스에 저장된 값들을 검색하거나 정렬하는 작업을 위해 문자들을 서로 비교할 때 사용하는 규칙들의 집합이다. 따라서 이러한 규칙은 CHAR() 또는 VARCHAR()와 같은 문자 스트링 데이터 타입에만 적용된다. 단, NCAHR(), NCHAR VARYING()과 같은 국가 문자 스트링 데이터 타입에서는 해당 문자 세트의 인코딩 알고리즘에 따라 정렬 규칙이 결정된다.
문자 스트링 변환(Character String Coercion)
고정길이와 가변길이 문자 스트링 사이에는 두 문자의 길이가 비교 가능할 수 있도록 자동 변환이 된다. 자동 변환은 동일한 문자 세트에 속하는 문자 스트링에만 적용된다.
예를 들어, 데이터 타입이 CHAR(5)인 컬럼을 추출하여 데이터 타입이 CHAR(10)인 컬럼에 삽입하는 경우 자동으로 데이터 타입이 CHAR(10)으로 변환되어 삽입된다. 문자 스트링을 명시적으로 변환할 수도 있는데, 이 때에는 CAST 연산자를 사용 한다(CAST 연산자 참조).