이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 23.2. 메이저 배트맨 토토 사이트 Support버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

22.2. 배트맨 토토 Support

배트맨 토토 Feature를 사용하면 CORNT 순서 및 문자 분류 동작을 열 당 또는 수술별로 지정할 수 있습니다. 이것은의 제한을 완화합니다.LC_COLLATEandLC_CTYPE생성 후에 데이터베이스 설정을 변경할 수 없습니다.

22.2.1. 개념

개념적으로, Collatable 데이터 유형의 모든 표현에는 배트맨 토토이 있습니다. (내장 된 Collatable 데이터 유형은입니다.텍스트, Varcharchar. 사용자 정의 기본 유형은 또한 Collatable으로 표시 될 수 있으며, 물론 Collatable Data 유형의 도메인은 Collatable입니다.) 표현식이 열 참조 인 경우 표현식의 배트맨 토토은 열의 정의 된 배트맨 토토입니다. 표현식이 상수 인 경우, 배트맨 토토은 상수의 데이터 유형의 기본 체계입니다. 보다 복잡한 표현의 협업은 아래에 설명 된 바와 같이 입력의 콜로레이션에서 파생됩니다.

표현의 협업은가 될 수 있습니다."기본"배트맨 토토, 이는 데이터베이스에 정의 된 로케일 설정을 의미합니다. 표현의 협업이 불확실해질 수도 있습니다. 그러한 경우, 주문 운영 및 콜라이트를 알아야하는 기타 작업이 실패 할 것입니다.

데이터베이스 시스템이 순서 또는 문자 분류를 수행 해야하는 경우 입력 표현식의 충돌을 사용합니다. 예를 들어와 같은 이런 일이 발생합니다.주문 by조항 및 기능 또는 연산자 호출<. 신청을위한 콜레이션주문 by절은 단순히 정렬 키의 충돌입니다. 기능 또는 연산자 호출을 신청하기위한 콜레이션은 아래에 설명 된대로 인수에서 파생됩니다. 비교 연산자 외에도 콜라이트는 하위 및 대문자로 변환하는 기능으로를 고려합니다.Lower, 어퍼initcap; 패턴 일치 연산자로; 그리고 byto_char및 관련 기능.

함수 또는 연산자 호출의 경우, 인수 콜라주를 검사하여 도출 된 배트맨 토토은 지정된 작업을 수행하기 위해 실행 시간에 사용됩니다. 함수 또는 운영자 호출의 결과가 Collatable Data 유형 인 경우, 배트맨 토토에 대한 지식이 필요한 주변 표현식이있는 경우 기능 또는 연산자 표현식의 정의 된 배트맨 토토으로 구문 분석 시간에도 콜레이션이 사용됩니다..

the배트맨 토토 Devation표현식은 암시 적이거나 명시적일 수 있습니다. 이 차이점은 여러 다른 콜라이트가 표현식에 나타날 때 콜라주가 결합되는 방식에 영향을 미칩니다. 명시 적 콜레이션 파생은 A가 발생합니다.Collate조항이 사용됩니다. 다른 모든 배트맨 토토 파생물은 암시 적입니다. 예를 들어 함수 호출에서 여러 콜라주를 결합 해야하는 경우 다음 규칙이 사용됩니다.

  1. 입력 표현식에 명시 적 콜레이션 파생이있는 경우 입력 표현식 간의 모든 명시 적으로 도출 된 콜라주가 동일해야합니다. 그렇지 않으면 오류가 발생해야합니다. 명시 적으로 파생 된 협업이 존재하는 경우, 이는 배트맨 토토 조합의 결과입니다.

  2. 그렇지 않으면 모든 입력 표현식은 동일한 암시 적 콜레이션 파생 또는 기본 콜레이션을 가져야합니다. 비 디폴트 콜레이션이있는 경우, 이는 배트맨 토토 조합의 결과입니다. 그렇지 않으면 결과는 기본 배트맨 토토입니다.

  3. 입력 표현식간에 비 분개 암시 적 콜라주가 충돌하는 경우 조합은 불확실한 협업을 갖는 것으로 간주됩니다. 호출되는 특정 함수가 적용 해야하는 콜라이트에 대한 지식이 필요하지 않는 한 오류 조건이 아닙니다. 그렇다면 런타임에 오류가 발생합니다.

예를 들어이 표 정의를 고려하십시오 :

테이블 생성 테스트 1 (
    텍스트는 "de_de",
    b 텍스트가 "es_es"를 수집하고
    ...
);

in

test1에서 < 'foo'를 선택하십시오.

the<비교는에 따라 수행됩니다.de_de규칙. 표현식은 암시 적으로 파생 된 배트맨 토토과 기본 콜레이션을 결합하기 때문입니다. 그러나에서

a <( 'foo'collate "fr_fr")에서 test1; 선택

비교는를 사용하여 수행됩니다.FR_FR규칙, 명시 적 충돌 파생이 암시 적 수정을 무시하기 때문입니다. 또한 주어진

test1에서 <b를 선택하십시오.

파서는 이후에 적용 할 콜라이트를 결정할 수 없습니다aandB열에는 암시 적 콜라이트가 상충됩니다. 이후로<운영자는 어떤 콜라이트를 사용할지 알아야합니다. 이로 인해 오류가 발생합니다. 명시적인 배트맨 토토 지정자를 입력 표현식에 첨부하여 오류를 해결할 수 있습니다.

a <b test1에서 "de_de"를 collate; 선택

또는 동등한

a Collate "de_de"<b from test1; 선택

반면에 구조적으로 유사한 경우

a ||를 선택하십시오 b test1;

이기 때문에 오류가 발생하지 않습니다.||운영자는 콜라주에 관심이 없습니다 : 결과는 콜라주에 관계없이 동일합니다.

함수 또는 연산자의 결합 된 입력 표현식에 할당 된 콜레이션은 함수 또는 연산자가 Collatable 데이터 유형의 결과를 전달하는 경우 기능 또는 연산자의 결과에 적용되는 것으로 간주됩니다. 그래서에서

선택 *에서 test1 주문에서 || 'foo';

주문은에 따라 수행됩니다.de_de규칙. 하지만이 질문 :

선택 *에서 test1 주문에서 || 비;

오류가 발생하지만.||운영자는 배트맨 토토을 알 필요가 없습니다.주문 by조항. 이전과 마찬가지로, 분쟁은 명백한 배트맨 토토 지정자로 해결 될 수 있습니다.

선택 *에서 test1 주문에서 || b "fr_fr"; Collate

22.2.2. 콜라주 관리

배트맨 토토은 SQL 이름을 운영 체제 로컬에 매핑하는 SQL 스키마 객체입니다. 특히, 그것은의 조합에 매핑됩니다.lc_collateandLC_CTYPE. (이름에서 알 수 있듯이, 콜레이션의 주요 목적은 설정하는 것입니다LC_COLLATE, 정렬 순서를 제어합니다. 그러나 실제로는 거의 필요하지 않습니다.LC_CTYPE다른 설정lc_collate, 따라서 설정을위한 다른 인프라를 만드는 것보다 하나의 개념으로 이러한 개념을 수집하는 것이 더 편리합니다LC_CTYPE표현식 당) 또한, 콜라이트는 문자 세트 인코딩에 연결되어 있습니다 (참조PostgreSQL : 문서 : 9.4 : 문자 토토 커뮤니티 지원). 다른 인코딩에 대해 동일한 배트맨 토토 이름이 존재할 수 있습니다.

모든 플랫폼에서 콜라이트라는 콜라이트기본값, Cposix사용 가능합니다. 운영 체제 지원에 따라 추가 콜로레이션을 사용할 수 있습니다. 그만큼기본값배트맨 토토을 선택합니다LC_COLLATEandLC_CTYPE데이터베이스 생성 시간에 지정된 값. 그만큼Candposix배트맨 토토s 둘 다 지정"전통적인 C"행동, ASCII 편지 만"a"through"Z"문자로 취급되고 문자 코드 바이트 값에 의해 정렬이 엄격하게 수행됩니다.

운영 체제가 단일 프로그램 내에서 여러 로케일을 사용하도록 지원하는 경우 (Newlocale및 관련 함수), 데이터베이스 클러스터가 초기화되면initdb시스템 카탈로그를 채 웁니다PG_배트맨 토토당시 운영 체제에서 찾은 모든 지역을 기반으로 한 콜라이트와 함께. 예를 들어, 운영 체제는라는 로케일을 제공 할 수 있습니다.de_de.utf8. initdb|de_de.utf8인코딩 용UTF8두 가지 모두LC_COLLATEandLC_CTYPE설정de_de.utf8. 또한와의 콜레이션도 생성 할 것입니다..utf8태그 이름을 제거했습니다. 그래서 당신은 또한 이름으로 콜레이션을 사용할 수 있습니다de_de, 글을 쓰는 것이 덜 번거 롭고 인코딩에 의존하는 이름을 덜 만듭니다. 그럼에도 불구하고 초기 콜레이션 이름 세트는 플랫폼 의존적입니다.

콜로레이션이 필요한 경우에 대한 값이 다른 경우LC_COLLATEandLC_CTYPE,를 사용하여 새로운 콜레이션을 만들 수 있습니다.PostgreSQL : 문서 : 9.4 : 토토 베이명령. 이 명령은 또한 기존 콜레이션에서 새로운 콜레이션을 만드는 데 사용될 수 있으며, 이는 응용 프로그램에서 운영 시스템 독립적 인 배트맨 토토 이름을 사용할 수있는 데 유용 할 수 있습니다.

특정 데이터베이스 내에서 해당 데이터베이스의 인코딩을 사용하는 콜라이트 만 관심이 있습니다. 의 다른 항목PG_배트맨 토토무시됩니다. 따라서와 같은 제거 된 콜라이트 이름de_de전 세계적으로 고유하지 않더라도 주어진 데이터베이스 내에서 고유 한 것으로 간주 될 수 있습니다. 박탈 된 콜레이션 이름을 사용하는 것이 좋습니다. 다른 데이터베이스 인코딩으로 변경하기로 결정한 경우 변경해야 할 사항이 하나도 없기 때문에 권장됩니다. 그러나기본값, Cposix데이터베이스 인코딩에 관계없이 콜라이트를 사용할 수 있습니다.

PostgreSQL동일한 속성이있는 경우에도 별개의 콜레이션 객체가 호환되지 않는 것으로 간주합니다. 예를 들어,

A A Collate "C"<B Collate "Posix"에서 Test1;

에도 불구하고 오류가 발생합니다.Candposix배트맨 토토s는 동일한 동작을 가지고 있습니다. 믹싱 스트리핑 및 스트립이없는 콜라이트 이름은 권장되지 않습니다.