8.3. 문자 유형#

표 8.4. 문자 유형

이름 설명
캐릭터 변동 (n), varchar (n) 한계가있는 가변 길이
캐릭터 (n), char (n), bpchar (n) 고정 길이, 공백 패드
BPCHAR 가변 무제한 길이, 빈 트리밍
텍스트 가변 무제한 길이

표 8.4PostgreSQL.

SQL두 가지 주요 문자 와이즈 토토을 정의합니다.문자 다양한 (n)and문자 (n), 여기서n긍정적 인 정수입니다. 이 두 가지 와이즈 토토 모두 줄을 최대로 저장할 수 있습니다n문자 (바이트 아님) 길이. 더 긴 문자열을 이러한 유형의 열에 저장하려는 시도는 초과 문자가 모든 공간이 아닌 한 오류가 발생합니다.이 경우 문자열은 최대 길이로 잘립니다. (이 다소 기괴한 예외는에 필요합니다SQLStandard.) 그러나, 값을 명시 적으로 값에 캐스트하는 경우캐릭터 변동 (n)또는문자 (n)n오류를 제기하지 않고 문자. (이것은 또한에 의해 필요합니다SQL표준.) 저장 될 문자열이 선언 된 길이보다 짧은 경우, 와이즈 토토 값캐릭터공간이있을 것입니다. 와이즈 토토의 값캐릭터 다양한단순히 짧은 문자열을 저장합니다.

또한PostgreSQL제공텍스트와이즈 토토은 모든 길이의 줄을 저장합니다. 비록텍스트와이즈 토토이 없습니다SQL표준, 기타 여러 SQL 데이터베이스 관리 시스템도 있습니다.텍스트isPostgreSQL의 기본 문자열 데이터 와이즈 토토, 문자열에서 작동하는 대부분의 내장 함수는 취하거나 반환하도록 선언텍스트아님캐릭터 다양한. 많은 목적을 위해캐릭터 다양한마치 마치도메인Over텍스트.

유형 이름Varchar캐릭터 다양한, whileBPCHAR(길이 지정자 포함) 및char캐릭터. 그만큼Varcharandchar별칭은에 정의되어 있습니다.SQL표준;BPCHARisPostgreSQL확장.

지정된 경우 길이n0보다 크고 10,485,760을 초과 할 수 없습니다. 만약에캐릭터 다양한(또는Varchar)는 길이 지정자없이 사용되며, 와이즈 토토은 모든 길이의 문자열을 허용합니다. 만약에BPCHAR길이 지정자가 부족하고 길이의 문자열도 허용하지만 후행 공간은 의미 적으로 중요하지 않습니다. 만약에캐릭터(또는char) 지정자가없고에 해당합니다.캐릭터 (1).

와이즈 토토의 값캐릭터지정된 너비까지 공백이 물리적으로 패딩되어 있습니다n, 저장 및 그 방식으로 표시됩니다. 그러나 후행 공간은 두 가지 와이즈 토토 값을 비교할 때 의미 적으로 무의미하고 무시되는 것으로 취급됩니다캐릭터. 공백이 중요한 콜라이트에서는이 동작이 예상치 못한 결과를 낳을 수 있습니다. 예를 들어선택 'A':: char (2) Collate "C"<e'a \ n ':: char (2)비록 진실을 반환하지만C로케일은 공간이 Newline보다 큰 것으로 간주 할 것입니다. a를 변환 할 때 후행 공간이 제거됩니다.캐릭터다른 문자열 와이즈 토토 중 하나에 대한 값. 후행 공간are의미 적으로 유의미한캐릭터 다양한and텍스트값, 그리고 패턴 매칭을 사용할 때Like및 정규 표현.

이러한 데이터 와이즈 토토에 저장할 수있는 문자는 데이터베이스가 생성 될 때 선택된 데이터베이스 문자 세트에 의해 결정됩니다. 특정 문자 세트에 관계없이 코드 0 (때때로 NUL이라고 함)이있는 문자를 저장할 수 없습니다. 자세한 내용은 참조섹션 24.3.

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

공백 패드 와이즈 토토을 사용할 때 저장 공간이 증가한 것 외에도이 세 가지 와이즈 토토의 성능 차이는없고, 길이로 제한 된 열에 저장할 때 길이를 확인하기 위해 몇 가지 추가 CPU 사이클이 있습니다. 하는 동안캐릭터 (n)다른 데이터베이스 시스템에 성능 장점이 있으므로 그러한 이점은 없습니다.PostgreSQL; 사실은캐릭터 (n)는 일반적으로 추가 저장 비용으로 인해 세 가지 중 가장 느린 것입니다. 대부분의 상황에서텍스트또는캐릭터 다양한대신 사용해야합니다.

참조섹션 4.1.2.1Stri와이즈 토토 Literals의 구문에 대한 정보 및 toPostgreSQL : 문서 : 16 : 9 장. 배트맨 토토 및 연산자가용 운영자 및 기능에 대한 정보는

예 8.1. 문자 유형 사용

테이블 생성 테스트 1 (문자 (4));
test1 값 ( 'Ok')에 삽입;
test1에서 a, char_length (a)를 선택하고; -(1)a | char_length
------+----------
 OK |           2생성 테이블 test2 (b varchar (5));
test2 값 ( 'Ok')에 삽입;
test2 값 ( '좋은')에 삽입;
test2 값에 삽입 ( '너무 길다');오류 : 와이즈 토토 문자에 비해 너무 긴 값 (5)test2 값에 삽입 ( '너무 길다':: varchar (5)); - 명시 적 잘림
test2에서 b, char_length (b)를 선택하십시오.b | char_length
-------+----------
 OK |           2
 좋은 |           5
 너무 l |           5

두 개의 다른 고정 길이 문자 와이즈 토토이 있습니다PostgreSQL, 표시표 8.5. 이들은 일반 목적 용도가 아니며 내부 시스템 카탈로그에서만 사용하기위한 것이 아닙니다. 그만큼이름유형은 식별자를 저장하는 데 사용됩니다. 길이는 현재 64 바이트 (63 개의 사용 가능한 문자 + 터미네이터)로 정의되지만 상수를 사용하여 참조해야합니다지명inC소스 코드. 길이는 컴파일 시간에 설정되므로 (따라서 특수 용도로 조정 가능); 기본 최대 길이는 향후 릴리스에서 변경 될 수 있습니다. 와이즈 토토"char"(인용문 참고)는와 다릅니다.char (1)하나의 바이트 만 사용하므로 단일 ASCII 문자 만 저장할 수 있습니다. 시스템 카탈로그에서 단순한 열거 와이즈 토토으로 사용됩니다.

표 8.5. 특수 문자 유형

이름 스토리지 크기 설명
"char" 1 바이트 단일 바이트 내부 와이즈 토토
이름 64 바이트 개체 이름의 내부 유형

정정 제출

문서에 올바른 것이 없으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면