문자 형식 - Amazon Redshift

문자 형식

문자 데이터 형식에는 CHAR(문자)와 VARCHAR(가변 문자)가 포함됩니다.

스토리지 및 범위

CHAR 및 VARCHAR 데이터 형식은 문자가 아닌 바이트로 정의됩니다. CHAR 열에는 단일 바이트 문자만 포함되기 때문에 예를 들어 CHAR(10) 열이라고 하면 최대 10바이트의 문자열이 포함될 수 있습니다. VARCHAR에는 멀티바이트 문자가 포함되어 문자당 최대 4바이트까지 가능합니다. 예를 들어 VARCHAR(12)라고 하면 단일 바이트 문자 12개, 2바이트 문자 6개, 3바이트 문자 4개, 또는 4바이트 문자 3개가 포함될 수 있습니다.

명칭 스토리지 범위(열의 너비)
CHAR, CHARACTER 또는 NCHAR 후행 공백(있는 경우)을 포함한 문자열 길이 4096 bytes
VARCHAR, CHARACTER VARYING 또는 NVARCHAR 4바이트 + 전체 문자 바이트, 여기에서 각 문자의 길이는 1~4바이트가 될 수 있습니다. 65535바이트(64K -1)
BPCHAR 고정 길이 CHAR(256)로 변환됨 256 bytes
TEXT VARCHAR(256)로 변환됨 260 bytes
참고

CREATE TABLE 구문은 문자 데이터 형식에 MAX 키워드를 지원합니다. 예:

create table test(col1 varchar(max));

MAX 설정은 열의 폭을 CHAR일 때는 4096바이트로, 그리고 VARCHAR일 때는 65535바이트로 정의합니다.

CHAR 또는 CHARACTER

CHAR 또는 CHARACTER 열은 고정 길이 문자열을 저장하는 데 사용됩니다. 이 문자열은 공백으로 채워지므로 CHAR(10) 열은 항상 10바이트의 스토리지를 차지합니다.

char(10)

길이 명세가 없는 CHAR 열은 CHAR(1) 열이 됩니다.

VARCHAR 또는 CHARACTER VARYING

VARCHAR 또는 CHARACTER VARYING 열은 제한이 고정되어 있는 가변 길이 문자열을 저장하는 데 사용됩니다. 이 문자열은 공백으로 채워지지 않으므로 VARCHAR(120) 열은 단일 바이트 문자 120개, 2바이트 문자 60개, 3바이트 문자 40개 또는 4바이트 문자 30개까지 구성됩니다.

varchar(120)

CREATE TABLE 문에서 길이 지정자 없이 VARCHAR 데이터 형식을 사용하는 경우 기본 길이는 256입니다. 표현식에 사용되는 경우 출력 크기는 입력 표현식(최대 65535)을 사용하여 결정됩니다.

NCHAR 및 NVARCHAR 형식

NCHAR 및 NVARCHAR 형식(NATIONAL CHARACTER 및 NATIONAL CHARACTER VARYING 형식으로도 불림)의 열을 생성할 수 있습니다. 이 두 형식은 각각 CHAR 및 VARCHAR 형식으로 변환된 후 지정한 바이트 수로 저장됩니다.

길이 명세가 없는 NCHAR 열은 CHAR(1) 열로 변환됩니다.

길이 명세가 없는 NVARCHAR 열은 VARCHAR(256) 열로 변환됩니다.

TEXT 및 BPCHAR 형식

TEXT 열이 포함된 Amazon Redshift 테이블을 생성할 수는 있지만 이 열은 VARCHAR(256) 열로 변환되어 최대 256개 문자까지 가변 길이 값을 허용합니다.

BPCHAR(공백 채움 문자) 형식의 Amazon Redshift 열을 생성할 수 있으며, 이 열은 Amazon Redshift에서 고정 길이 CHAR(256) 열로 변환됩니다.

후행 공백의 중요성

CHAR 및 VARCHAR 데이터 형식은 모두 n 바이트 길이까지 문자열을 저장합니다. 더욱 긴 문자열을 이러한 형식의 열에 저장하려고 하면 오류를 반환합니다. 단, 추가 문자가 모두 공백일 경우에는 문자열이 최대 길이까지 잘립니다. 문자열이 최대 길이보다 짧을 경우 CHAR 값은 공백으로 채워지지만 VARCHAR 값은 공백 없이 문자열을 저장합니다.

CHAR 값에서 후행 공백은 언제나 의미상 유의적이지 않습니다. CHAR 값 2개를 비교할 때는 무시되고, LENGTH 계산에 포함되지 않으며, 그리고 CHAR 값을 다른 문자열 형식으로 변환할 때는 제거됩니다.

값을 서로 비교할 경우 VARCHAR 값과 CHAR 값의 후행 공백은 의미상 유의적이지 않습니다.

LENGTH 계산을 실행하면 길이에 포함된 후행 공백까지 합쳐서 VARCHAR 문자열의 길이를 반환합니다. 하지만 고정 길이 문자열에서는 후행 공백을 길이에 포함하여 계산하지 않습니다.