-
[PostgreSQL] Character Typesdb/PostgreSQL 2022. 9. 1. 11:06
char(n) // = character(n) varchar(n) // = character varying(n) //n은 양의 정수 //최대 n개의 문자(바이트x)저장 //n개의 문자 초과시 에러 text
- CHAR(n) (=CHARACTER(n))
내부적으로 저장될 때는 space로 패딩되어 n바이트로 채워진다.
n지정 안된 경우 -> n은1로 취급
마지막 문자 이후의 공백들은 모두 버려진다.
CREATE TABLE char_test (id SERIAL PRIMARY KEY, col CHAR(4));
INSERT INTO char_test(col) VALUES('가나다라 '),('가나다라 '),('가나다라 '),('가나다라 '); SELECT id, col, LENGTH(col) AS '길이' FROM char_test;
맨 앞 문자 이전의 공백들은 데이터로 포함됨
INSERT INTO char_test(col) VALUES('1'),(' 1'),(' 1'),(' 1'); SELECT id, col, LENGTH(col) AS 길이 FROM char_test;
양 끝의 앞 뒤에 공백이 섞인 경우 다음과 같음( 뒤 공백은 trim되어 포함x)
INSERT INTO char_test(col) VALUES(' 234 '); SELECT id, col, LENGTH(col) AS 길이 FROM char_test;
PostgreSQL에서 char_length(character_length)와 length 함수 둘다 문자개수 리턴
MySQL에서 char_length함수는 문자개수, length함수는 바이트개수 리턴
- VARCHAR(n) (= CHARACTER VARYING(n))
내부적으로는 space 패딩 없이 그대로 저장된다.
n지정 안된 경우 -> 어떠한 길이의 문자도 저장 가능
char와 다르게 맨 앞 문자 이전의 공백, 맨 뒷 문자 이후의 공백들은 데이터도 포함된다.
CREATE TABLE varchar_test(id SERIAL PRIMARY KEY, col VARCHAR(10)); INSERT INTO varchar_test(col) VALUES('1'),(' 1'),('1 '),(' 1 '); SELECT id, col, LENGTH(col) AS 길이 FROM varchar_test; DROP TABLE varchar_test;
- TEXT
어떠한 길이의 문자도 저장 가능.