표 8-4다음에서 사용할 수 있는 범용 문자 유형을 표시합니다.포스트그레SQL.
SQL두 개의 기본을 정의합니다. 문자 토토:문자 다양(n)그리고문자(n), 여기서n은 양의 정수입니다. 둘 다 이러한 토토은 최대 문자열을 저장할 수 있습니다.n문자 길이. 저장하려는 시도 이러한 토토의 열에 더 긴 문자열을 추가하면 초과 문자가 모두 공백이 아닌 경우 오류가 발생합니다. 문자열은 최대 길이까지 잘립니다. (이 다소 기괴한 예외가 필요합니다.SQLstandard.) 저장할 문자열이 선언된 길이보다 짧음, 토토의 값문자스페이스가 채워집니다. 토토 값문자 다양단순히 다음을 저장합니다. 짧은 문자열.
명시적으로 값을 캐스팅하는 경우문자 다양한(n)또는문자(n), 그리고 길이를 초과하는 값은 다음과 같이 잘립니다.n오류가 발생하지 않는 문자. (이 역시 다음에서 요구됩니다.SQL표준.)
표기법varchar(n)그리고문자(n)별칭입니다 에 대한문자 다양(n)그리고문자(n), 각각.문자길이 없음 지정자는 다음과 같습니다.문자(1). 만일문자 다양길이 없이 사용됩니다. 지정자에 따라 유형은 모든 크기의 문자열을 허용합니다. 후자는포스트그레SQL확장.
또한,PostgreSQL제공텍스트유형, 저장 모든 길이의 문자열. 유형이지만텍스트다음에 없습니다SQL표준, 기타 여러 SQL 데이터베이스 관리 시스템에도 있습니다.
토토 값문자물리적으로 지정된 너비까지 공백으로 채워짐n이며, 그런 식으로 저장되고 표시됩니다. 그러나 패딩 공간은 의미상으로 처리됩니다. 중요하지 않은. 두 개를 비교할 때 후행 공백은 무시됩니다. 토토 값문자, 그러면 그들은 a 변환 시 제거됨문자값 다른 문자열 유형 중 하나로 변환됩니다. 후행 공백에 유의하세요.아르의미적으로 중요한 것문자 다양그리고텍스트값.
짧은 문자열에 대한 저장 요구사항(최대 126바이트) 1바이트에 공백을 포함하는 실제 문자열을 더한 값입니다. 의 경우 패딩문자. 더 길다 문자열에는 1바이트 대신 4바이트의 오버헤드가 있습니다. 긴 문자열은 시스템에 의해 자동으로 압축되므로 물리적 디스크 요구 사항이 더 적을 수 있습니다. 매우 긴 값도 있습니다. 방해하지 않도록 백그라운드 테이블에 저장됩니다. 더 짧은 열 값에 빠르게 액세스할 수 있습니다. 어쨌든 가장 긴 저장할 수 있는 문자열은 약 1GB 정도입니다. ( 허용되는 최대값n데이터 유형 선언의 값이 다음보다 작습니다. 그. 이것을 변경하는 것은 별로 유용하지 않을 것입니다. 멀티바이트 문자는 문자 수와 바이트 수를 인코딩합니다. 어쨌든 꽤 다를 수 있습니다. 오랫동안 보관하고 싶다면 특정 상한값이 없는 문자열, 사용텍스트또는문자 다양길이 지정자 없이 임의의 형식을 구성하는 대신 길이 제한.)
팁:사이에는 성능 차이가 없습니다. 이 세 가지 토토은 스토리지 크기가 증가하는 것 외에 공백 패딩 토토을 사용하고 확인하기 위해 몇 가지 추가주기 길이가 제한된 열에 저장할 때의 길이입니다. 동안문자(n)성능상의 이점이 있습니다. 다른 데이터베이스 시스템에는 그러한 이점이 없습니다.PostgreSQL. 대부분의 경우 상황텍스트또는문자 다양대신 사용해야 합니다.
참조섹션 4.1.2.1문자열 리터럴 구문에 대한 정보스포츠 토토 : 문서 : 8.3 : 기능 및 연산자다음 정보에 대해 사용 가능한 연산자 및 함수. 데이터베이스 문자 집합 텍스트 값을 저장하는 데 사용되는 문자 세트를 결정합니다. 에 대한 문자 집합 지원에 대한 자세한 내용은 참조섹션 22.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
char_length함수
에서 논의됩니다.PostgreSQL : 문서.다음에는 두 가지 다른 고정 길이 문자 유형이 있습니다.PostgreSQL, 다음에 표시됨테이블 8-5.이름토토이 존재함만식별자 저장용 내부 시스템 카탈로그이며 다음 사용자가 사용하도록 의도되지 않았습니다. 일반 사용자. 현재 길이는 64바이트(63바이트)로 정의되어 있습니다. 사용 가능한 문자와 종결자)를 사용하여 참조해야 합니다. 상수NAMEDATALEN. 길이는 컴파일 시간에 설정됩니다(따라서 특수한 경우 조정 가능). 용도); 기본 최대 길이는 향후 변경될 수 있습니다. 릴리스. 토토"문자"(인용문 참고) 와는 다르다문자(1)그 점에서는 1바이트의 저장 공간을 사용합니다. 시스템 내부에서 사용됩니다. 가난한 사람의 열거 토토으로서의 카탈로그.