표 8-4postgresql.
SQL두 개의 기본을 정의합니다 문자 토토 :캐릭터 변동 (n)and문자 (n12530_12533, 여기n긍정적 인 정수입니다. 둘 다 이러한 토토은 줄을 최대로 저장할 수 있습니다n길이의 문자. 저장하려는 시도 이러한 토토의 열에 더 긴 문자열이 오류, 초과 문자가 모든 공간이 아닌 한 문자열은 최대 길이로 잘립니다. (이것 다소 기괴한 예외가 필요합니다.SQL표준.) 저장 될 문자열이있는 경우 선언 된 길이보다 짧고 토토 값캐릭터공간이 가득합니다. 토토의 값캐릭터 다양한간단히 저장합니다 짧은 문자열.
값을 명시 적으로 값에 캐스트하는 경우문자 다양한 (n)또는문자 (n)오버 길이의 값은n오류를 올리지 않고 문자. (이것은 또한에 의해 필요합니다SQL표준.)
표기법varchar (n)andchar (n)별칭입니다 을 위한캐릭터 변동 (n)and문자 (n), 각기.캐릭터길이없이 지정자는에 해당합니다.문자 (1). 만약에캐릭터 다양한길이없이 사용됩니다 지정자, 토토은 모든 크기의 문자열을 허용합니다. 후자는입니다.PostgreSQL확장.
또한PostgreSQL제공텍스트토토 길이의 문자열. 비록 토토텍스트SQL표준, 기타 여러 SQL 데이터베이스 관리 시스템도 있습니다.
토토의 값캐릭터물리적입니다 지정된 너비에 공백으로 패딩n, 저장 및 그 방식으로 표시됩니다. 그러나 패딩 공간은 의미 적으로 처리됩니다 의미 없는. 두 가지를 비교할 때 후행 공간이 무시됩니다 토토의 값캐릭터변환 할 때 제거캐릭터값 다른 문자열 토토 중 하나에. 후행 공간are의미 적으로 유의미한캐릭터 다양한and텍스트값.
짧은 문자열의 스토리지 요구 사항 (최대 126 바이트) 공간이 포함 된 1 바이트 + 실제 문자열입니다. 의 경우 패딩캐릭터. 더 길게 문자열에는 1 대신 4 바이트 오버 헤드가 있습니다. 긴 줄은 다음과 같습니다. 시스템에 의해 압축되어 자동으로 물리적입니다 디스크의 요구 사항은 적을 수 있습니다. 매우 긴 값도 있습니다 방해하지 않도록 백그라운드 테이블에 저장 더 짧은 열 값에 대한 빠른 액세스. 어쨌든 가장 길다 저장할 수있는 가능한 문자열은 약 1GB입니다. (그만큼 허용 될 최대 값n데이터 토토 선언은보다 작습니다 저것. 이를 변경하는 것은 그리 유용하지 않습니다. 멀티 바이트 문자 인코딩 문자 및 바이트 수를 인코딩합니다 어쨌든 상당히 다를 수 있습니다. 오래 보관하고 싶다면 특정 상한이없는 문자열, 사용텍스트또는캐릭터 다양한길이 지정자가 없으면 임의의를 구성하는 것이 아니라 길이 제한.)
팁 :성능 차이가 없습니다 이 세 가지 토토은 스토리지 크기 증가를 제외하고 빈 둥근 토토을 사용하고 몇 가지 추가주기를 확인할 수 있습니다. 길이가 제한된 컬럼에 저장할 때의 길이. 하는 동안문자 (n)성능 장점이 있습니다 다른 데이터베이스 시스템에는에 그러한 장점이 없습니다.PostgreSQL. 대부분 상황텍스트또는캐릭터 다양한대신 사용해야합니다.
참조섹션 4.1.2.1문자열 리터럴의 구문에 대한 정보 및 to스포츠 토토 : 문서 : 8.3 : 기능 및 연산자정보에 대한 정보 사용 가능한 연산자 및 기능. 데이터베이스 문자 세트 텍스트 값을 저장하는 데 사용되는 문자 세트를 결정합니다. ~을 위한 문자 세트 지원에 대한 자세한 내용은 참조섹션 22.2.
예 8-1. 문자 토토 사용
테이블 생성 테스트 1 (문자 (4)); test1 값 ( 'Ok')에 삽입; test1에서 a, char_length (a)를 선택하고; -(1) a | char_length ------+---------- OK | 2생성 테이블 테스트 2 (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)한 바이트의 스토리지를 사용합니다. 내부적으로 시스템에서 사용됩니다 가난한 사람의 열거 토토으로 카탈로그.