젠 토토 기능을 통해 정렬 순서를 지정할 수 있습니다 문자 분류 동작은 컬럼 당 데이터의 또는 심지어 심지어 데이터의 데이터의 행동 동작입니다 수용자. 이것은의 제한을 완화합니다.LC_COLLATEandLC_CTYPE데이터베이스 설정을 변경할 수 없습니다 창조 후.
개념적으로, Collatable 데이터 유형의 모든 표현식은 있습니다 젠 토토. (내장 된 Collatable 데이터 유형은입니다.텍스트, Varchar및char. 사용자 정의 기본 유형도 표시 할 수 있습니다 Collatable, 물론 Collatable Data Type의 도메인 표현이 열 참조 인 경우 표현의 협업은 열. 표현이 일정하다면 젠 토토은 상수의 데이터 유형의 기본 수정. 그만큼 보다 복잡한 표현의 협업은 아래에 설명 된대로 입력의 콜라주.
표현의 협업은가 될 수 있습니다."기본"젠 토토, 이는 로케일을 의미합니다 데이터베이스에 대해 정의 된 설정. 또한 가능합니다 표현의 협력은 불확실합니다. 그러한 경우 주문 운영 및 기타 콜레이션이 실패합니다.
데이터베이스 시스템이 주문 또는
문자 분류는 입력의 충돌을 사용합니다
표현. 예를 들어와 같은 이런 일이 발생합니다.주문 by조항 및 기능 또는 운영자 호출
와 같은<. 적용 할 수있는 콜레이션
for주문별절은 단순히
정렬 키의 협업. 신청하는 콜레이션
기능 또는 운영자 호출은
아래에 설명되어 있습니다. 비교 연산자 외에도
콜라이트는 변환하는 기능으로 고려됩니다
와 같은 하위 케이스 문자 사이Lower
, 어퍼
,
그리고initcap
; 패턴 매칭으로
운영자; 그리고 byto_char
및
관련 기능.
함수 또는 운영자 호출의 경우, 젠 토토 인수 콜라주를 검토하여 파생 된 것은 실행 중에 사용됩니다. 지정된 작업을 수행하기위한 시간. 결과 인 경우 함수 또는 운영자 호출은 Collatable Data Type입니다. 정의 된 젠 토토으로 구문 분석 시간에도 젠 토토이 사용됩니다. 기능 또는 연산자 표현의 경우 그것에 대한 지식이 필요한 주변 표현 대조.
the젠 토토 Devation의 표현은 암시 적이거나 명시적일 수 있습니다. 이 구별 다중 다른 경우 콜라주가 결합되는 방식에 영향을 미칩니다 콜라이트는 표현식에 나타납니다. 명백한 콜레이션 파생은 A 일 때 발생합니다.Collate조항이 사용됩니다. 다른 모든 젠 토토 파생물은 암시 적입니다. 예를 들어 여러 콜라주를 결합 해야하는 경우 기능 호출, 다음 규칙이 사용됩니다.
입력 표현식에 명시적인 충전이있는 경우 파생, 그리고 모든 콜라이트가 명시 적으로 도출되었습니다 입력 표현식은 동일해야합니다. 그렇지 않으면 오류입니다. 제기됩니다. 명시 적으로 파생 된 협업이 있으면 그것이 젠 토토 조합의 결과입니다.
그렇지 않으면 모든 입력 표현식은 동일해야합니다 암시 적 콜레이션 파생 또는 기본 콜레이션. 만약에 비 디폴트 콜레이션이 있습니다. 즉, 결과입니다. 젠 토토 조합. 그렇지 않으면 결과는 기본 젠 토토.
비 분개 암시 적 콜라주가 상충되는 경우 입력 표현식 중에는 조합이 간주됩니다 불확실한 협력을 갖기 위해. 이것은 오류가 아닙니다 특정 함수가 호출되지 않는 한 조건 적용해야 할 협업에 대한 지식이 필요합니다. 만약 런타임에 오류가 발생합니다.
예를 들어,이 표 정의를 고려하십시오 :
테이블 생성 테스트 1 ( 텍스트는 "de_de", b 텍스트가 "es_es"를 수집하고 ... );
in
test1에서 < 'foo'를 선택하십시오.
the<비교가 수행됩니다 에 따르면de_de규칙 표현식은 암시 적으로 파생 된 협업을 결합합니다 기본 콜레이션. 그러나에서
a <( 'foo'collate "fr_fr")에서 test1; 선택
비교는를 사용하여 수행됩니다.FR_FR명시 적 충돌이기 때문에 규칙 파생은 암시 적을 무시합니다. 또한 주어진
test1에서 <b를 선택하십시오.
파서는 그 이후로 적용 할 콜라이트를 결정할 수 없습니다 그만큼aandB열은 상충됩니다 콜라이트. 이후로<운영자 어떤 콜라이트를 사용할 것인지 알아야합니다. 오류. 명시 적을 첨부하여 오류를 해결할 수 있습니다 입력 표현식 중 하나에 대한 젠 토토 Specifier :
a <b test1에서 "de_de"를 collate; 선택
또는 동등하게
테스트 1에서 "de_de"<b Collate를 선택하십시오.
반면에 구조적으로 유사한 경우
a ||를 선택하십시오 b test1;
이기 때문에 오류가 발생하지 않습니다.||운영자는 젠 토토s : ITS 결과는 젠 토토에 관계없이 동일합니다.
함수 또는 연산자의 결합에 할당 된 콜레이션 입력 표현식은 또한 함수에 적용되는 것으로 간주됩니다. 또는 운영자의 결과, 기능 또는 연산자가 Collatable Data Type의 결과. 그래서에서
선택 *에서 test1 주문에서 || 'foo';
주문은에 따라 수행됩니다.de_de규칙. 하지만이 질문 :
a ||의 test1 주문 * 선택 * 비;
오류가 발생합니다.||운영자는 젠 토토을 알 필요가 없습니다. 그만큼주문 by조항. 이전과 같이 분쟁은 명백한 협력으로 해결 될 수 있습니다 지정자 :
선택 *에서 test1 주문에서 || b "fr_fr"; Collate
젠 토토은 SQL 이름을 운영 체제 지역. 특히, 그것은 a에 매핑됩니다 의 조합LC_COLLATE및LC_CTYPE. (이름에서 알 수 있듯이 젠 토토의 주요 목적은 설정하는 것입니다LC_COLLATE, 정렬 순서를 제어합니다. 그러나 그것은 실제로를 갖기 위해 실제로는 거의 필요하지 않습니다.LC_CTYPE|LC_COLLATE이므로 더 편리합니다 다른 개념으로 다른 개념으로 수집하는 것보다 하나의 개념으로 수집하십시오 설정을위한 인프라LC_CTYPEper 표현.) 또한 젠 토토은 캐릭터 세트에 묶여 있습니다. 인코딩 (참조PostgreSQL : 문서 : 9.1 : 문자 세트 토토 베이). 그만큼 다른 인코딩에 대해 동일한 젠 토토 이름이 존재할 수 있습니다.
모든 플랫폼에서 콜로레이션이라는 콜로레이션기본값, C및posix사용 가능합니다. 추가의 운영 체제에 따라 콜라이트를 사용할 수 있습니다 지원하다. 그만큼기본값젠 토토 Selects 그만큼lc_collateandLC_CTYPE데이터베이스 생성에 지정된 값 시간. 그만큼Candposix젠 토토s 둘 다 지정"전통적인 C"행동, ASCII Letters"a"through"Z"문자 및 정렬은 문자 코드 바이트에 의해 엄격하게 수행됩니다. 값.
운영 체제가 다중 사용을 지원하는 경우
단일 프로그램 내의 로케일 (Newlocale
및 관련 함수), 그런 다음 a
데이터베이스 클러스터가 초기화되어initdb시스템 카탈로그를 채 웁니다PG_젠 토토당시 운영 체제에서 발견됩니다. 을 위한
예를 들어, 운영 체제는라는 로케일을 제공 할 수 있습니다.de_de.utf8. initdb|de_de.utf8인코딩 용UTF8두 가지 모두lc_collateandLC_CTYPE설정de_de.utf8. 또한 생성됩니다
와의 콜로레이션.utf8태그
이름을 벗겨 냈습니다. 따라서 젠 토토을 사용할 수도 있습니다
이름으로de_de글을 쓰는 것이 번거롭고 이름을 인코딩 의존적으로 덜 만듭니다.
그럼에도 불구하고 초기 콜레이션 이름 세트는 다음과 같습니다.
플랫폼 의존적.
콜로레이션이 필요한 경우에 대한 값이 다른 경우lc_collateandLC_CTYPE, 새로운 젠 토토을 사용하여 만들 수 있습니다 그만큼젠 토토명령. 그 명령은 또한 새로운 기존의 콜레이션에서 콜레이션을 통해 유용 할 수 있습니다. 운영 시스템 독립적 인 콜레이션 이름을 사용할 수 있습니다 응용 프로그램.
특정 데이터베이스 내에서 사용하는 콜라이트 만 사용합니다 해당 데이터베이스의 인코딩은 관심이 있습니다. 의 다른 항목PG_젠 토토무시됩니다. 따라서, ade_de비록 주어진 데이터베이스 내에서 고유 한 것으로 간주 될 수 있습니다. 전 세계적으로 독특하지 않을 것입니다. 박탈 된 콜라이트 사용 이름은 당신을 더 적게 만들기 때문에 추천합니다. 다른 데이터베이스로 변경하기로 결정하면 변경해야합니다. 부호화. 그러나기본값, C및posix콜라이트를 사용할 수 있습니다 데이터베이스 인코딩에 관계없이.
postgresql고려 뚜렷한 콜레이션 객체는 호환되지 않아도됩니다 동일한 속성이 있습니다. 예를 들어,
A A Collate "C"<B Collate "Posix"에서 "Posix";
에도 불구하고 오류가 발생합니다.Candposix젠 토토s 동일한 행동이 있습니다. 믹싱 스트리핑 및 스트립 따라서 콜라이트 이름은 권장되지 않습니다.