표 8-4postgresql.
SQL두 개의 기본을 정의합니다 문자 토토 :캐릭터 변동 (n)and문자 (n12530_12533, 여기n긍정적 인 정수입니다. 둘 다 이러한 토토은 줄을 최대로 저장할 수 있습니다n길이의 문자. 저장하려는 시도 이러한 토토의 열에 더 긴 문자열이 오류, 초과 문자가 모든 공간이 아닌 한 문자열은 최대 길이로 잘립니다. (이것 다소 기괴한 예외가 필요합니다.SQL표준.) 저장 될 문자열이있는 경우 선언 된 길이보다 짧고 토토 값캐릭터공간이 가득합니다. 토토의 값캐릭터 다양한간단히 저장합니다 짧은 문자열.
값을 명시 적으로 값에 캐스트하는 경우문자 다양한 (n)또는문자 (n)오버 길이의 값은n오류를 올리지 않고 문자. (이것은 또한에 의해 필요합니다SQL표준.)
참고 :이전PostgreSQL7.2, 문자열도 오류를 제기하지 않고 항상 오류가 잘 렸습니다 명시 적 또는 암시 적 주조 상황.
표기법varchar (n)andchar (n)별칭입니다 을 위한캐릭터 변동 (n)및문자 (n), 각기.문자길이없이 지정자는에 해당합니다.문자 (1). 만약에캐릭터 다양한길이없이 사용됩니다 지정자, 유형은 모든 크기의 문자열을 허용합니다. 후자는입니다.PostgreSQL확장.
또한PostgreSQL제공텍스트유형 길이의 문자열. 비록 유형텍스트SQL표준, 기타 여러 SQL 데이터베이스 관리 시스템도 있습니다.
토토의 값캐릭터물리적입니다 지정된 너비에 공백으로 패딩n, 저장 및 그 방식으로 표시됩니다. 그러나 패딩 공간은 의미 적으로 처리됩니다 의미 없는. 두 가지를 비교할 때 후행 공간이 무시됩니다 토토의 값캐릭터변환 할 때 제거캐릭터값 다른 문자열 유형 중 하나에. 후행 공간are의미 적으로 유의미한캐릭터 다양한and텍스트값.
이러한 유형의 데이터에 대한 스토리지 요구 사항은 4 바이트입니다. 게다가 실제 문자열,의 경우캐릭터패딩과 함께. 긴 줄은 시스템에 의해 압축되어 자동으로 물리적입니다 디스크의 요구 사항은 적을 수 있습니다. 긴 값도 저장됩니다 배경 테이블이므로 빠른 접근을 방해하지 않습니다. 더 짧은 열 값. 어쨌든 가장 긴 가능 저장할 수있는 문자 문자열은 약 1GB입니다. (최대 값 허용 될 값n데이터 유형 선언은 그보다 적습니다. 그렇지 않을 것입니다 멀티 바이트 문자로이를 변경하는 데 매우 유용합니다 인코딩 문자 및 바이트 수를 상당히 어쨌든 다른. 긴 줄을 보관하고 싶다면 특정 상한, 사용텍스트또는캐릭터 다양한길이없이 임의의 길이 제한을 구성하기보다는 지정자입니다.)
팁 :성능 차이가 없습니다 이 세 가지 토토은 빈 배치 토토을 사용합니다. 하는 동안문자 (n)다른 데이터베이스 시스템의 성능 장점 그러한 장점 없음PostgreSQL. 대부분의 상황에서텍스트또는문자 다양한대신 사용해야합니다.
참조섹션 4.1.2.1문자열 리터럴의 구문에 대한 정보, 그리고스포츠 토토 베트맨 : 문서 : 8.0 : 기능 및 스포츠 토토 베트맨정보 사용 가능한 운영자 및 기능에 대해. 데이터베이스 문자 세트는 텍스트 값을 저장하는 데 사용되는 문자 세트를 결정합니다. 문자 세트 지원에 대한 자세한 내용은 참조하십시오.섹션 20.2.
예 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
char_length
함수
에서 논의PostgreSQL : 문서.두 개의 다른 고정 길이 문자 유형이 있습니다PostgreSQL, 표시테이블 8-5. 그만큼이름토토 존재전용식별자 저장 내부 시스템은 카탈로그이며 일반 사용자. 길이는 현재 64 바이트로 정의됩니다 (63 사용 가능한 문자 + 종료기) 그러나 사용을 참조해야합니다 상수paminatalen. 길이는입니다 컴파일 시간에 설정 (따라서 특수 용으로 조정 가능) 용도); 기본 최대 길이는 향후 릴리스에서 변경 될 수 있습니다. 토토"char"(인용문 참고)입니다 와 다릅니다char (1)만 사용한다는 점에서 1 바이트의 저장. 시스템 카탈로그에 내부적으로 사용됩니다 가난한 사람의 열거 토토으로.