티스토리 뷰

표기법 varchar(n) 및 char(n)은 각각 character varying(n) 및 character(n)의 별명이다.

둘 다 똑같지만 많은 데이터베이스가 주로 postgreSQL이 제공하는 다양한 문자를 제공하지 않는다.

따라서 Oracle Postgre 및 DB2와 같은 다중 데이터베이스의 경우 Varchar를 사용하는 것이 좋다.

 

형명설명

character varying( n ) 、 varchar( n )  상한있는 가변 길이
character( n ) 、 char( n )  공백으로 채워진 고정 길이
text 제한없는 가변 길이

 

PostgreSQL에서 사용할 수있 는 범용 문자 형식을 보여줍니다.

SQL은 2 개의 주요 문자 데이터 형식을 정의합니다. character varying(n), character(n)입니다. 여기서 n은 양의 정수입니다. 이러한 데이터 형식은 2 개 모두 n 문자 길이 (바이트 단위가 아니라)의 문자열을 저장할 수 있습니다. 초과하는 문자가 모두 공백을 제외하고, 한도를 넘은 문자열을 형식의 열에 저장하려고 하면 오류가 발생합니다. 모두 비어 있으면 길이의 한계에서 잘립니다. (이 색다른 예외는 표준 SQL에서 요구되고 있습니다.) 만약 선언된 상한보다 문자열이 짧을 때는 character의 값은 공백으로 채워집니다 character varying 값은 단순히 짧은 문자열로 저장됩니다.

 

명시적으로 값을 character varying(n) 또는 character(n)으로 캐스팅하면, 지정된 길이를 초과하는 오류없이 n 문자까지로 잘립니다. (이것도 표준 SQL의 사양입니다.)

char(n) 및 varchar(n)이라는 표기법은 각각 character(n) character varying(n)의 별칭입니다. 길이 지정이없는 character는 character(1)과 동일합니다. character varying 이 길이 지정없이 사용되었을 때, 어떠한 길이의 문자열로 받아들입니다. 후자는 PostgreSQL의 확장입니다.

게다가 PostgreSQL은 어떠한 길이의 문자열로 저장할 수있는 text를 지원합니다. text 형식은 표준 SQL은 아니지만, 많은 다른 SQL 데이터베이스 관리 시스템도 마찬가지로 지원하고 있습니다.

character 형식의 값은 지정된 길이 n 때까지 물리적으로 공백으로 채워져 그대로 저장, 표시됩니다. 그러나 추가된 공백은 의미적으로 중요하지 않은 것으로 간주됩니다. 마지막 공백은 2 개의 character 형식의 값 비교시 무시됩니다. 또한 character 값을 다른 문자열로 변환하는 경우에는 삭제됩니다. character varying 형식과 text 형식의 값에서, 마지막 공백은 의미적으로 중요한 것이므로주의하십시오.

짧은 문자열 (126 바이트까지)의 저장에는 실제 문자열에 1 바이트의 크기가 추가된 합계가 필요합니다. character에서는 공백 포함 분이 추가됩니다. 더 긴 문자열은 1 바이트가 아닌 4 바이트의 오버헤드가 됩니다. 긴 문자열은 시스템에 의해 자동으로 압축되기 때문에 디스크의 물리적 필요 용량 크기는 더 작아질 수도 있습니다. 또한 아주 긴 값은 더 짧은 열 값에 대한 빠른 액세스를 방해하지 않도록 배경(백그라운드) 테이블에 저장됩니다. 어느 경우에도 저장할 수있는 최대 문자열은 약 1 기가 바이트입니다. (데이터 형식 선언에 사용되는 n에 허용되는 최대값은 이보다 작습니다. 멀티 바이트 문자 인코딩에서는 문자와 바이트는 전혀 다르기 때문에, 이 값의 변경은 편리하지 않습니다. 특정 제한을 두지 않고 긴 문자열을 저장하고 싶은 경우는, 임의의 상한을 마련하기보다 길이를 지정하지않는 text 또는 character varying를 사용하십시오.)

Tip : 공백으로 채워진 형식을 사용할 경우 저장 공간 증가 및 길이 제한 열에 저장할 때 길이를 시험하기 위하여 몇 가지 불필요한 CPU 사이클이 추가 되는 점과는 별도로 이러한 3 가지 유형 간의 성능에 대한 차이는 없습니다. 다른 일부 데이터베이스에서는 character(n)에 성능적인 이점이 있지만, PostgreSQL에서는 이러한 이점은 없습니다. 사실, 저장시 추가 비용이 있기 때문에 character(n)은 3 개 중에서 가장 느립니다.

 

Reference

http://www.postgresqltutorial.com/postgresql-char-varchar-text/

 

PostgreSQL Character Types: CHAR, VARCHAR, And TEXT

 

www.postgresqltutorial.com

https://stackoverflow.com/questions/1199468/what-is-the-difference-between-character-varying-and-varchar-in-postgresql

 

What is the difference between CHARACTER VARYING and VARCHAR in PostgreSQL?

John uses CHARACTER VARYING in the places where I use VARCHAR. I am a beginner, while he is an expert. This suggests me that there is something which I do not know. What is the difference between

stackoverflow.com

참조 

https://jieun0113.tistory.com/101

 

[PostgreSQL] character varying 와 varchar 차이점

표기법 varchar(n) 및 char(n)은 각각 character varying(n) 및 character(n)의 별명이다. 둘 다 똑같지만 많은 데이터베이스가 주로 postgreSQL이 제공하는 다양한 문자를 제공하지 않는다. 따라서 Oracle Postgr..

jieun0113.tistory.com

https://m.blog.naver.com/PostView.nhn?blogId=kngt13&logNo=80129335583&proxyReferer=https:%2F%2Fwww.google.com%2F

 

[PostgreSQL] 8.3. 문자 형식

표 8-4. 문자 형명 설명 character varying( n ) 、 varchar( n ) 상한있는 가변 길이 character( n ) 、 c...

blog.naver.com

 

'DB' 카테고리의 다른 글

[PostgreSQL] numeric와 integer차이점  (0) 2020.07.14
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함