이 문서는 지원되지 않는 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표준.)

표기법varchar(n)그리고젠 토토(n)다음의 별칭입니다.젠 토토 다양(n)그리고젠 토토(n)입니다. 지정된 경우 길이는 0보다 커야 하며 10485760을 초과할 수 없습니다.젠 토토길이 지정자가 없는 것은 다음과 같습니다.젠 토토(1). 만일젠 토토 다양는 길이 지정자 없이 사용되며 유형은 모든 크기의 젠 토토열을 허용합니다. 후자는PostgreSQL확장.

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

유형 값젠 토토지정된 너비까지 공백으로 물리적으로 채워집니다.n, 그런 식으로 저장되고 표시됩니다. 그러나 후행 공백은 의미상 중요하지 않은 것으로 간주되며 type의 두 값을 비교할 때 무시됩니다.젠 토토. 공백이 중요한 데이터 정렬에서는 이 동작으로 인해 예상치 못한 결과가 발생할 수 있습니다. 예를 들어SELECT 'a '::CHAR(2) 대조 "C" < E'a\n'::CHAR(2)그래도 true를 반환합니다.C로케일은 공백이 줄바꿈보다 큰 것으로 간주합니다. a를 변환할 때 후행 공백이 제거됩니다.젠 토토값을 다른 젠 토토열 유형 중 하나로 변경합니다. 후행 공백에 유의하세요.아르의미적으로 중요한젠 토토 다양함그리고텍스트값, 패턴 일치를 사용할 때 즉좋아요및 정규식.

이러한 데이터 유형에 저장될 수 있는 젠 토토는 데이터베이스가 생성될 때 선택되는 데이터베이스 젠 토토 집합에 의해 결정됩니다. 특정 젠 토토 집합에 관계없이 코드 0(NUL이라고도 함)이 있는 젠 토토는 저장할 수 없습니다. 자세한 내용은 다음을 참조하세요.섹션 23.3.

짧은 젠 토토열(최대 126바이트)에 대한 저장 요구 사항은 1바이트에 실제 젠 토토열을 더한 것입니다. 여기에는 다음의 경우 공백 패딩이 포함됩니다.젠 토토. 긴 젠 토토열에는 1바이트가 아닌 4바이트의 오버헤드가 있습니다. 긴 젠 토토열은 시스템에서 자동으로 압축되므로 디스크의 물리적 요구 사항이 더 적을 수 있습니다. 매우 긴 값은 짧은 열 값에 대한 빠른 액세스를 방해하지 않도록 백그라운드 테이블에도 저장됩니다. 어쨌든 저장할 수 있는 가장 긴 젠 토토열은 약 1GB입니다. (허용되는 최대값n데이터 유형 선언의 값이 그보다 작습니다. 멀티바이트 젠 토토 인코딩을 사용하면 젠 토토 수와 바이트 수가 상당히 다를 수 있으므로 이를 변경하는 것은 유용하지 않습니다. 특정 상한선 없이 긴 젠 토토열을 저장하려면 다음을 사용하세요.텍스트또는젠 토토 다양길이 지정자 없이 임의의 길이 제한을 구성하는 대신.)

공백 패딩 유형을 사용할 때 저장 공간이 늘어나고 길이가 제한된 열에 저장할 때 길이를 확인하기 위한 몇 가지 추가 CPU 주기를 제외하고는 이 세 가지 유형 간에 성능 차이가 없습니다. 동안젠 토토(n)일부 다른 데이터베이스 시스템에서는 성능 이점이 있지만 다음에는 그러한 이점이 없습니다.포스트그레SQL; 사실젠 토토(n)은 추가 저장 비용으로 인해 일반적으로 세 가지 중 가장 느립니다. 대부분의 상황에서텍스트또는젠 토토 다양대신 사용해야 합니다.

참조섹션 4.1.2.1젠 토토열 리터럴의 구문에 대한 정보PostgreSQL : 문서 : 12 : 제 9 장 범퍼카 토토 및 연산자사용 가능한 연산자 및 함수에 대한 정보.

예 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)INSERT INTO test2 VALUES ('너무 깁니다'::varchar(5)); -- 명시적 잘림
SELECT b, char_length(b) FROM test2;b | char_length
-----+-------------
 알았어 |           2
 좋아 |           5
 나도 |           5

(1)

char_length함수는 다음에서 논의됩니다.PostgreSQL : 문서 : 12 : 9.4. 토토 함수 및 연산자.


다음에는 두 가지 다른 고정 길이 젠 토토 유형이 있습니다.PostgreSQL, 표시됨표 8.5.이름유형이 존재함내부 시스템 카탈로그에 식별자를 저장하기 위한 것이며 일반 사용자가 사용하기 위한 것이 아닙니다. 해당 길이는 현재 64바이트(63개의 사용 가능한 젠 토토 + 종결자)로 정의되어 있지만 상수를 사용하여 참조해야 합니다.NAMEDATALENC소스 코드. 길이는 컴파일 타임에 설정됩니다(따라서 특별한 용도로 조정 가능). 기본 최대 길이는 향후 릴리스에서 변경될 수 있습니다. 유형"젠 토토"(따옴표 참고)는 다음과 다릅니다.젠 토토(1)단지 1바이트의 저장 공간만 사용합니다. 이는 시스템 카탈로그에서 단순한 열거 유형으로 내부적으로 사용됩니다.

표 8.5. 특수 젠 토토 유형

이름 저장소 크기 설명
"젠 토토" 1바이트 싱글바이트 내부 유형
이름 64바이트 객체 이름의 내부 유형