이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 8.3. 사설 토토 유형버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

8.3. 문자 유형

표 8-4. 문자 토토 베이

이름 설명
문자 다양(n), varchar(n) 제한이 있는 가변 길이
문자(n), 문자(n) 고정 길이, 공백 패딩
텍스트 변수 무제한 길이

표 8-4다음에서 사용할 수 있는 범용 문자 유형을 표시합니다.포스트그레SQL.

SQL두 개의 기본을 정의합니다. 문자 토토 베이:문자 다양(n)그리고문자(n), 여기서n은 양의 정수입니다. 둘 다 이러한 토토 베이은 최대 문자열을 저장할 수 있습니다.n문자 길이. 저장하려는 시도 이러한 토토 베이의 열에 더 긴 문자열을 추가하면 오류(초과 문자가 모두 공백인 경우는 제외) 문자열은 최대 길이까지 잘립니다. (이 다소 기괴한 예외가 필요합니다.SQLstandard.) 저장할 문자열이 선언된 길이보다 짧음, 토토 베이의 값문자스페이스가 채워집니다. 토토 베이 값문자 다양단순히 다음을 저장합니다. 짧은 문자열.

명시적으로 값을 캐스팅하는 경우문자 다양한(n)또는문자(n), 그리고 길이를 초과하는 값은 다음과 같이 잘립니다.n오류가 발생하지 않는 문자. (이 역시 다음에서 요구됩니다.SQL표준.)

참고:이전PostgreSQL7.2, 너무 많은 문자열 long은 오류 없이 항상 잘렸습니다. 명시적 또는 암시적 캐스팅 컨텍스트 중 하나입니다.

표기법varchar(n)그리고문자(n)별칭입니다 에 대한문자 다양(n)그리고문자(n), 각각.문자길이 없음 지정자는 다음과 같습니다.문자(1). 만일문자 다양길이 없이 사용됩니다. 지정자에 따라 유형은 모든 크기의 문자열을 허용합니다. 후자는PostgreSQL확장.

또한,PostgreSQL제공텍스트유형, 저장 모든 길이의 문자열. 유형이지만텍스트다음에 없습니다SQL표준, 기타 여러 SQL 데이터베이스 관리 시스템에도 있습니다.

토토 베이 값문자물리적으로 지정된 너비까지 공백으로 채워짐n이며, 그런 식으로 저장되고 표시됩니다. 그러나 패딩 공간은 의미상으로 처리됩니다. 중요하지 않은. 두 개를 비교할 때 후행 공백은 무시됩니다. 토토 베이 값문자, 그러면 그들은 a 변환 시 제거됨문자값 다른 문자열 유형 중 하나로 변환됩니다. 후행 공백에 유의하세요.아르의미적으로 중요한 것문자 다양그리고텍스트값.

이러한 유형의 데이터에 대한 저장 요구사항은 4바이트입니다. 실제 문자열과 다음의 경우에는문자+ 패딩. 긴 문자열은 시스템에 의해 자동으로 압축되므로 물리적 디스크 요구 사항이 더 적을 수 있습니다. 긴 값은 다음에도 저장됩니다. 빠른 액세스를 방해하지 않도록 배경 테이블 더 짧은 열 값. 어쨌든 최대한 오래 저장할 수 있는 문자열은 약 1GB입니다. (최대 허용되는 값n데이터 유형 선언의 값이 그보다 작습니다. 그렇지 않을 것이다 멀티바이트 문자를 사용하므로 이를 변경하는 것이 매우 유용합니다. 문자 및 바이트 수를 인코딩하는 것은 상당히 많을 수 있습니다. 어쨌든 다릅니다. 긴 문자열을 저장하지 않고 저장하고 싶다면 특정 상한, 사용텍스트또는문자 다양길이 없음 임의의 길이 제한을 구성하는 대신 지정자입니다.)

팁:사이에는 성능 차이가 없습니다. 이 세 가지 토토 베이은 스토리지 크기가 증가하는 것 외에도 공백 패딩 토토 베이을 사용합니다. 동안문자(n)있음 일부 다른 데이터베이스 시스템에서는 성능 이점이 있지만 그런 이점은 없습니다PostgreSQL. 대부분의 상황에서텍스트또는문자 다양함대신 사용해야 합니다.

참조섹션 4.1.2.1문자열 리터럴 구문에 대한 정보는 그리고스포츠 토토 : 문서 : 8.1 : 기능 및 스포츠 토토정보용 사용 가능한 연산자와 함수에 대해 알아보세요. 데이터베이스 캐릭터 set은 텍스트 값을 저장하는 데 사용되는 문자 세트를 결정합니다. 문자 집합 지원에 대한 자세한 내용은 다음을 참조하세요.섹션 21.2.

예제 8-1. 문자 유형 사용

CREATE TABLE test1 (문자(4));
test1 값에 삽입('확인');
SELECT a, char_length(a) FROM test1; --(1)
a | char_length
------+---------------
 알았어 |           2CREATE TABLE test2(b varchar(5));
test2 값에 삽입('확인');
test2 값에 삽입('양호');
test2 값에 삽입('너무 깁니다');오류: 유형 문자 변경에 비해 값이 너무 깁니다(5)test2 값에 삽입('너무 깁니다'::varchar(5)); -- 명시적 잘림
SELECT b, char_length(b) FROM test2;b | char_length
-----+-------------
 알았어 |           2
 좋아 |           5
 나도 |           5
(1)
char_length함수 에서 논의됩니다.PostgreSQL : 문서.

다음에는 두 가지 다른 고정 길이 문자 유형이 있습니다.PostgreSQL, 다음에 표시됨테이블 8-5.이름토토 베이이 존재함식별자 저장용 내부 시스템 카탈로그이며 다음 사용자가 사용하도록 의도되지 않았습니다. 일반 사용자. 현재 길이는 64바이트(63바이트)로 정의되어 있습니다. 사용 가능한 문자와 종결자)를 사용하여 참조해야 합니다. 상수NAMEDATALEN. 길이는 컴파일 시간에 설정됩니다(따라서 특수한 경우 조정 가능). 용도); 기본 최대 길이는 향후 릴리스에서 변경될 수 있습니다. 토토 베이"문자"(따옴표 참고)은 와는 다르다문자(1)단지 사용한다는 점에서 1바이트의 저장 공간. 시스템 카탈로그에서 내부적으로 사용됩니다. 가난한 사람의 열거 토토 베이으로.

표 8-5. 특수 문자 유형

이름 저장용량 크기 설명
"문자" 1바이트 단일 문자 내부 유형
이름 64바이트 객체 이름의 내부 유형