ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PostgreSQL] Character Types
    db/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

    어떠한 길이의 문자도 저장 가능.

     

    댓글

Designed by Tistory.