윈 토토 : 문서 : 9.4 : 윈 토토 9.4 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.4 : 토토 사이트 추천 지원 | PostgreSQL : 문서 : 9.4 : 배트맨 토토 | 22 장. 현지화 | PostgreSQL : 문서 : 9.4 : 문자 토토 커뮤니티 지원 |
배트맨 토토 Feature를 사용하면 CORNT 순서 및 문자 분류 동작을 열 당 또는 수술별로 지정할 수 있습니다. 이것은의 제한을 완화합니다.LC_COLLATEandLC_CTYPE생성 후에 데이터베이스 설정을 변경할 수 없습니다.
개념적으로, Collatable 데이터 유형의 모든 표현에는 배트맨 토토이 있습니다. (내장 된 Collatable 데이터 유형은입니다.텍스트, Varchar및char. 사용자 정의 기본 유형은 또한 Collatable으로 표시 될 수 있으며, 물론 Collatable Data 유형의 도메인은 Collatable입니다.) 표현식이 열 참조 인 경우 표현식의 배트맨 토토은 열의 정의 된 배트맨 토토입니다. 표현식이 상수 인 경우, 배트맨 토토은 상수의 데이터 유형의 기본 체계입니다. 보다 복잡한 표현의 협업은 아래에 설명 된 바와 같이 입력의 콜로레이션에서 파생됩니다.
표현의 협업은가 될 수 있습니다."기본"배트맨 토토, 이는 데이터베이스에 정의 된 로케일 설정을 의미합니다. 표현의 협업이 불확실해질 수도 있습니다. 그러한 경우, 주문 운영 및 콜라이트를 알아야하는 기타 작업이 실패 할 것입니다.
데이터베이스 시스템이 순서 또는 문자 분류를 수행 해야하는 경우 입력 표현식의 충돌을 사용합니다. 예를 들어와 같은 이런 일이 발생합니다.주문 by조항 및 기능 또는 연산자 호출<. 신청을위한 콜레이션주문 by절은 단순히 정렬 키의 충돌입니다. 기능 또는 연산자 호출을 신청하기위한 콜레이션은 아래에 설명 된대로 인수에서 파생됩니다. 비교 연산자 외에도 콜라이트는 하위 및 대문자로 변환하는 기능으로를 고려합니다.Lower
, 어퍼
및initcap
; 패턴 일치 연산자로; 그리고 byto_char
및 관련 기능.
함수 또는 연산자 호출의 경우, 인수 콜라주를 검사하여 도출 된 배트맨 토토은 지정된 작업을 수행하기 위해 실행 시간에 사용됩니다. 함수 또는 운영자 호출의 결과가 Collatable Data 유형 인 경우, 배트맨 토토에 대한 지식이 필요한 주변 표현식이있는 경우 기능 또는 연산자 표현식의 정의 된 배트맨 토토으로 구문 분석 시간에도 콜레이션이 사용됩니다..
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열에는 암시 적 콜라이트가 상충됩니다. 이후로<운영자는 어떤 콜라이트를 사용할지 알아야합니다. 이로 인해 오류가 발생합니다. 명시적인 배트맨 토토 지정자를 입력 표현식에 첨부하여 오류를 해결할 수 있습니다.
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
배트맨 토토은 SQL 이름을 운영 체제 로컬에 매핑하는 SQL 스키마 객체입니다. 특히, 그것은의 조합에 매핑됩니다.lc_collateandLC_CTYPE. (이름에서 알 수 있듯이, 콜레이션의 주요 목적은 설정하는 것입니다LC_COLLATE, 정렬 순서를 제어합니다. 그러나 실제로는 거의 필요하지 않습니다.LC_CTYPE다른 설정lc_collate, 따라서 설정을위한 다른 인프라를 만드는 것보다 하나의 개념으로 이러한 개념을 수집하는 것이 더 편리합니다LC_CTYPE표현식 당) 또한, 콜라이트는 문자 세트 인코딩에 연결되어 있습니다 (참조PostgreSQL : 문서 : 9.4 : 문자 토토 커뮤니티 지원). 다른 인코딩에 대해 동일한 배트맨 토토 이름이 존재할 수 있습니다.
모든 플랫폼에서 콜라이트라는 콜라이트기본값, C및posix사용 가능합니다. 운영 체제 지원에 따라 추가 콜로레이션을 사용할 수 있습니다. 그만큼기본값배트맨 토토을 선택합니다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전 세계적으로 고유하지 않더라도 주어진 데이터베이스 내에서 고유 한 것으로 간주 될 수 있습니다. 박탈 된 콜레이션 이름을 사용하는 것이 좋습니다. 다른 데이터베이스 인코딩으로 변경하기로 결정한 경우 변경해야 할 사항이 하나도 없기 때문에 권장됩니다. 그러나기본값, C및posix데이터베이스 인코딩에 관계없이 콜라이트를 사용할 수 있습니다.
PostgreSQL동일한 속성이있는 경우에도 별개의 콜레이션 객체가 호환되지 않는 것으로 간주합니다. 예를 들어,
A A Collate "C"<B Collate "Posix"에서 Test1;
에도 불구하고 오류가 발생합니다.Candposix배트맨 토토s는 동일한 동작을 가지고 있습니다. 믹싱 스트리핑 및 스트립이없는 콜라이트 이름은 권장되지 않습니다.