PostgreSQL | 데이터 형식(Data type) | 문자열 형식(varchar, char, text)

PosgtreSQL에서 사용할 수 있는 데이터 형식 중 문자 사용에 대해 설명한다. 문자는 가변 길이 문자형(character varying, varchar), 고정 길이 문자형(character, char) 제한없이 가변 문자형(text)이 있다.

문자열 형식

문자는 다음과 같은 데이터 형이 준비되어 있습니다.

형식 크기 별칭
character varying(n) 가변 길이 문자열 varchar(n)
character(n) 고정 길이 문자열 char(n)
text 제한없이 가변 길이

character varying(n)은 가변 길이의 문자형이다. 최대 길이(n)까지의 문자를 저장할 수 있다. character(n)은 고정 길이 문자형이다. 저장할 문자가 n개가 되지 않는 경우에는 나머지는 공백으로 채워진다.

두 문자형 모두 n개의 문자보다 긴 문자열을 저장하려고 하면 에러가 발생하게 되지만, n개의 문자보다 짧으면 n개의 문자만 저장된다.

길이를 지정하지 않고 character varying라고만 지정하면 문자 제한이 없는 것으로 간주된다. 이에 반해 길이를 지정하지 않고 character라고만지정하면 character(1)로 간주된다.

text 형식은 길이에 제한이 없는 가변 길이 문자형이다. 매우 긴 문자열을 포함하는 경우에 사용한다.

예를 들어, 다음과 같은 테이블을 생성한다

devkuma=# create table strtest (str1 varchar(10), str2 char(10));
CREATE TABLE
devkuma=#

생성한 테이블에 다음과 같은 데이터를 추가한다.

devkuma=# insert into strtest values('kuma', 'kuma');
INSERT 0 1
devkuma=# insert into strtest values('  kuma  ', '  kuma  ');
INSERT 0 1
devkuma=#

첫 번째 데이터는 ‘kuma’라는 문자열을 각각 포함되어 있고, 두 번째 데이터는 문자열 앞뒤에 공백이 각각 두 개의 ’ kuma ‘라는 문자열을 포함되어 있다. 그러면 테이블에서 데이터를 조회해 보자. 값을 얻을 때 char_length 함수도 사용하여 문자 수도 함께 표시해 보도록 한다.

devkuma=# select str1, char_length(str1), str2, char_length(str2) from strtest;
   str1   | char_length |    str2    | char_length
----------+-------------+------------+-------------
 kuma     |           4 | kuma       |           4
   kuma   |           8 |   kuma     |           6
(2개 행)


devkuma=#

가변 길이 문자열(str1)은 SELECT으로 조회하면 저장된 문자열 앞뒤의 공백을 포함하여 그대로 조회가 되고 있다. 그에 비해 고정 길이 문자열(str2)은 SELECT으로 조회된 문자열의 앞에 공백은 그대로이지만 문자열 뒤에 있는 공백은 모두 제거된 것을 확인할 수 있다.

– PosgtreSQL에서 사용할 수 있는 데이터 형식 중 문자 사용에 대해 설명하였다.