23.2. 대조 지원#

조합 기능을 사용하면 열별 또는 작업별로 데이터의 메이저 토토 사이트 순서와 문자 분류 동작을 지정할 수 있습니다. 이는 다음과 같은 제한을 완화합니다.LC_COLLATE그리고LC_CTYPE데이터베이스 설정은 생성 후에 변경할 수 없습니다.

23.2.1. 개념#

개념적으로, 조합 가능한 데이터 유형의 모든 표현에는 조합이 있습니다. (내장된 메이저 토토 사이트 가능한 데이터 유형은 다음과 같습니다.텍스트, varchar그리고문자. 사용자 정의 기본 유형은 조합 가능으로 표시될 수도 있습니다. 물론 a도메인조합 가능한 데이터 유형에 대해서는 조합 가능합니다.) 표현식이 열 참조인 경우 표현식의 데이터 메이저 토토 사이트은 정의된 열의 데이터 메이저 토토 사이트입니다. 식이 상수인 경우 데이터 메이저 토토 사이트은 상수 데이터 형식의 기본 데이터 메이저 토토 사이트입니다. 더 복잡한 표현식의 데이터 메이저 토토 사이트은 아래에 설명된 대로 해당 입력의 데이터 메이저 토토 사이트에서 파생됩니다.

표현식의 조합은 다음과 같습니다.기본값메이저 토토 사이트은 데이터베이스에 대해 정의된 로케일 설정을 의미합니다. 표현식의 데이터 정렬이 불확실할 수도 있습니다. 이러한 경우 정렬 작업과 데이터 정렬을 알아야 하는 기타 작업이 실패합니다.

데이터베이스 시스템은 순서 지정이나 문자 분류를 수행해야 할 때 입력 표현식의 조합을 사용합니다. 예를 들어 이런 일이 발생합니다.주문 기준절 및 함수 또는 다음과 같은 연산자 호출<. 를 신청할 데이터 메이저 토토 사이트주문 기준절은 단순히 메이저 토토 사이트 키의 조합입니다. 함수 또는 연산자 호출에 적용할 데이터 메이저 토토 사이트은 아래 설명된 대로 인수에서 파생됩니다. 비교 연산자 외에도 소문자와 대문자를 변환하는 함수를 통해 대조가 고려됩니다.하위, 상부initcap; 패턴 일치 연산자로; 그리고 까지to_char및 관련 기능.

함수 또는 연산자 호출의 경우 인수 데이터 메이저 토토 사이트을 검사하여 파생된 데이터 메이저 토토 사이트은 런타임에 지정된 작업을 수행하는 데 사용됩니다. 함수 또는 연산자 호출의 결과가 조합 가능한 데이터 유형인 경우 해당 조합에 대한 지식이 필요한 주변 표현식이 있는 경우 구문 분석 시 함수 또는 연산자 표현식의 정의된 데이터 메이저 토토 사이트로 데이터 메이저 토토 사이트이 사용됩니다.

조합 파생표현식은 암시적이거나 명시적일 수 있습니다. 이러한 구별은 여러 개의 서로 다른 데이터 메이저 토토 사이트이 표현식에 나타날 때 데이터 메이저 토토 사이트이 결합되는 방식에 영향을 미칩니다. 명시적인 데이터 메이저 토토 사이트 파생은 다음과 같은 경우에 발생합니다.콜레이트절이 사용되었습니다. 다른 모든 데이터 메이저 토토 사이트 파생은 암시적입니다. 예를 들어 함수 호출에서 여러 데이터 메이저 토토 사이트을 결합해야 하는 경우 다음 규칙이 사용됩니다.

  1. 입력 표현식에 명시적인 데이터 메이저 토토 사이트 파생이 있는 경우 입력 표현식 사이에서 명시적으로 파생된 모든 데이터 메이저 토토 사이트은 동일해야 하며 그렇지 않으면 오류가 발생합니다. 명시적으로 파생된 데이터 메이저 토토 사이트이 있는 경우 이는 데이터 메이저 토토 사이트 조합의 결과입니다.

  2. 그렇지 않으면 모든 입력 표현식은 동일한 암시적 데이터 메이저 토토 사이트 파생 또는 기본 데이터 메이저 토토 사이트을 가져야 합니다. 기본이 아닌 데이터 메이저 토토 사이트이 있는 경우 이는 데이터 메이저 토토 사이트 조합의 결과입니다. 그렇지 않으면 결과는 기본 데이터 메이저 토토 사이트입니다.

  3. 입력 표현식 사이에 기본이 아닌 암시적 데이터 메이저 토토 사이트이 충돌하는 경우 해당 조합은 불확실한 데이터 메이저 토토 사이트이 있는 것으로 간주됩니다. 호출되는 특정 함수에 적용해야 하는 데이터 메이저 토토 사이트에 대한 지식이 필요하지 않은 한 이는 오류 조건이 아닙니다. 그렇다면 런타임에 오류가 발생합니다.

예를 들어, 다음 테이블 정의를 고려하십시오:

테이블 테스트1 생성(
    텍스트 대조 "de_DE",
    b 텍스트 대조 "es_ES",
    ...
);

그럼 안으로

test1에서 < 'foo' 선택;

the<비교는 다음에 따라 수행됩니다.de_DE규칙 - 표현식이 암시적으로 파생된 데이터 메이저 토토 사이트을 기본 데이터 메이저 토토 사이트과 결합하기 때문입니다. 하지만

SELECT a < ('foo' COLLATE "fr_FR") FROM test1;

비교는 다음을 사용하여 수행됩니다.fr_FR규칙. 왜냐하면 명시적 데이터 메이저 토토 사이트 파생이 암시적 데이터 메이저 토토 사이트 파생을 재정의하기 때문입니다. 게다가 주어진

테스트1에서 a < b 선택;

파서는 적용할 데이터 메이저 토토 사이트을 결정할 수 없습니다. 왜냐하면a그리고b열에 충돌하는 암시적 데이터 메이저 토토 사이트이 있습니다. 이후<운영자는 사용할 데이터 메이저 토토 사이트을 알아야 하며 이로 인해 오류가 발생합니다. 입력 표현식 중 하나에 명시적 데이터 메이저 토토 사이트 지정자를 연결하면 오류를 해결할 수 있습니다.

SELECT a < b test1에서 "de_DE" 대조;

또는 동등하게

collate "de_DE" < b FROM test1; 선택

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

선택 || b 테스트1에서;

오류가 발생하지 않습니다. 왜냐하면||연산자는 데이터 메이저 토토 사이트에 신경 쓰지 않습니다. 결과는 데이터 메이저 토토 사이트에 관계없이 동일합니다.

함수 또는 연산자가 조합 가능한 데이터 유형의 결과를 제공하는 경우 함수 또는 연산자의 결합된 입력 표현식에 할당된 대조는 함수 또는 연산자의 결과에도 적용되는 것으로 간주됩니다. 그래서, 안으로

SELECT * FROM test1 ORDER BY || '푸';

주문은 다음에 따라 이루어집니다.de_DE규칙. 하지만 이 쿼리는:

SELECT * FROM test1 ORDER BY || 비;

오류가 발생합니다. 왜냐하면||연산자는 데이터 메이저 토토 사이트을 알 필요가 없습니다.주문 기준절이 그렇습니다. 이전과 마찬가지로 명시적인 데이터 메이저 토토 사이트 지정자를 사용하여 충돌을 해결할 수 있습니다.

SELECT * FROM test1 ORDER BY || b 대조 "fr_FR";

23.2.2. 데이터 메이저 토토 사이트 관리#

콜레이션은 SQL 이름을 운영 체제에 설치된 라이브러리가 제공하는 로캘에 매핑하는 SQL 스키마 개체입니다. 데이터 메이저 토토 사이트 정의에는공급자로케일 데이터를 제공하는 라이브러리를 지정합니다. 하나의 표준 공급자 이름은 다음과 같습니다.libc, 운영 체제 C 라이브러리에서 제공하는 로케일을 사용합니다. 이는 운영 체제에서 제공하는 대부분의 도구에서 사용되는 로캘입니다. 다른 제공업체는 다음과 같습니다.icu, 외부 ICU를 사용함도서관. ICU 로케일은 PostgreSQL이 빌드될 때 ICU에 대한 지원이 구성된 경우에만 사용할 수 있습니다.

다음에서 제공하는 대조 개체libc다음의 조합에 매핑됩니다.LC_COLLATE그리고LC_CTYPE설정, 허용된 대로setlocale()시스템 라이브러리 호출. (이름에서 알 수 있듯이 데이터 메이저 토토 사이트의 주요 목적은 다음을 설정하는 것입니다.LC_COLLATE, 메이저 토토 사이트 순서를 제어합니다. 그러나 실제로는 거의 필요하지 않습니다.LC_CTYPE다음과 다른 설정LC_COLLATE이므로 설정을 위해 다른 인프라를 만드는 것보다 하나의 개념으로 이를 수집하는 것이 더 편리합니다.LC_CTYPE표현식당.) 또한, alibc조합은 문자 집합 인코딩에 연결되어 있습니다(참조PostgreSQL : 문서 : 17 : 23.3. 캐릭터 토토 캔 지원). 다른 인코딩에 대해 동일한 데이터 메이저 토토 사이트 이름이 존재할 수 있습니다.

다음에서 제공하는 대조 개체icu은 ICU 라이브러리에서 제공하는 명명된 대조기에 매핑됩니다. ICU는 별도 지원하지 않습니다.조합그리고ctype설정이므로 항상 동일합니다. 또한 ICU 데이터 메이저 토토 사이트은 인코딩과 무관하므로 데이터베이스에는 항상 특정 이름의 ICU 데이터 메이저 토토 사이트이 하나만 있습니다.

23.2.2.1. 표준 데이터 메이저 토토 사이트#

모든 플랫폼에서 다음 데이터 메이저 토토 사이트이 지원됩니다:

유니코드

이 SQL 표준 데이터 메이저 토토 사이트은 기본 유니코드 데이터 메이저 토토 사이트 요소 테이블과 함께 유니코드 데이터 메이저 토토 사이트 알고리즘을 사용하여 메이저 토토 사이트됩니다. 모든 인코딩에서 사용할 수 있습니다. 이 데이터 메이저 토토 사이트을 사용하려면 ICU 지원이 필요하며 다음과 같은 경우 동작이 변경될 수 있습니다.PostgreSQL은 다른 버전의 ICU로 구축되었습니다. (이 조합은 ICU 루트 로케일과 동일한 동작을 갖습니다. 참조und-x-icu(for정의되지 않음).)

ucs_basic

이 SQL 표준 조합은 자연어 순서가 아닌 유니코드 코드 포인트 값을 사용하여 ASCII 문자만 메이저 토토 사이트합니다.A통해Z문자로 취급됩니다. 동작은 모든 버전에서 효율적이고 안정적입니다. 인코딩에만 사용 가능UTF8. (이 조합은 libc 로캘 사양과 동일한 동작을 갖습니다.CinUTF8인코딩.)

pg_unicode_fast

이 조합은 자연어 순서가 아닌 유니코드 코드 포인트 값을 기준으로 메이저 토토 사이트됩니다. 기능의 경우하위, initcap상위유니코드 전체 대소문자 매핑을 사용합니다. 패턴 일치(정규 표현식 포함)를 위해 유니코드의 표준 변형을 사용합니다.호환성 속성. 동작은 a 내에서 효율적이고 안정적입니다.포스트그레스주 버전. 인코딩에만 사용 가능합니다.UTF8.

pg_c_utf8

이 조합은 자연어 순서가 아닌 유니코드 코드 포인트 값을 기준으로 메이저 토토 사이트됩니다. 기능의 경우하위, initcap상위, 유니코드 단순 대소문자 매핑을 사용합니다. 패턴 일치(정규 표현식 포함)를 위해 유니코드의 POSIX 호환 변형을 사용합니다.호환성 속성. 동작은 a 내에서 효율적이고 안정적입니다.PostgreSQL주 버전. 이 데이터 메이저 토토 사이트은 인코딩에만 사용할 수 있습니다.UTF8.

C(동등함POSIX)

C그리고POSIX조합의 기반은전통적인 C행동. 자연어 순서가 아닌 바이트 값을 기준으로 메이저 토토 사이트하고 ASCII 문자만 메이저 토토 사이트합니다.A통해Z문자로 취급됩니다. 동작은 지정된 데이터베이스 인코딩의 모든 버전에서 효율적이고 안정적이지만 동작은 데이터베이스 인코딩마다 다를 수 있습니다.

기본값

기본값메이저 토토 사이트은 데이터베이스 생성 시 지정된 로케일을 선택합니다.

운영 체제 지원에 따라 추가 데이터 메이저 토토 사이트을 사용할 수 있습니다. 이러한 추가 데이터 메이저 토토 사이트의 효율성과 안정성은 데이터 메이저 토토 사이트 공급자, 공급자 버전, 로케일에 따라 달라집니다.

23.2.2.2. 사전 정의된 데이터 메이저 토토 사이트#

운영 체제가 단일 프로그램 내에서 여러 로케일 사용을 지원하는 경우(newlocale및 관련 기능) 또는 ICU 지원이 구성된 경우 데이터베이스 클러스터가 초기화되면,initdb시스템 카탈로그를 채웁니다pg_메이저 토토 사이트당시 운영 체제에서 찾은 모든 로케일을 기반으로 한 데이터 메이저 토토 사이트을 사용합니다.

현재 사용 가능한 로케일을 검사하려면 쿼리를 사용하십시오.SELECT * FROM pg_메이저 토토 사이트또는 명령\dOS+inpsql.

23.2.2.2.1. libc 데이터 메이저 토토 사이트#

예를 들어, 운영 체제는 다음과 같은 로케일을 제공할 수 있습니다.de_DE.utf8. initdb그러면이라는 이름의 대조를 생성할 것입니다.de_DE.utf8인코딩용UTF8둘 다 있음LC_COLLATE그리고LC_CTYPE다음으로 설정됨de_DE.utf8. 또한.utf8태그가 이름을 제거했습니다. 따라서 이름 아래에 대조를 사용할 수도 있습니다.de_DE, 작성이 덜 번거롭고 이름의 인코딩 의존도가 낮아집니다. 그럼에도 불구하고 초기 데이터 메이저 토토 사이트 이름 집합은 플랫폼에 따라 다릅니다.

기본 데이터 메이저 토토 사이트 세트는 다음에서 제공됩니다.libc명령을 사용하여 나열할 수 있는 운영 체제에 설치된 로케일에 직접 매핑로케일 -a. a의 경우libc다른 값을 가진 데이터 메이저 토토 사이트이 필요합니다.LC_COLLATE그리고LC_CTYPE또는 데이터베이스 시스템이 초기화된 후 운영 체제에 새 로캘이 설치된 경우 다음을 사용하여 새 조합이 생성될 수 있습니다.컬렉션 생성명령. 새로운 운영 체제 로케일은 다음을 사용하여 한꺼번에 가져올 수도 있습니다.pg_import_system_메이저 토토 사이트s()함수.

특정 데이터베이스 내에서는 해당 데이터베이스의 인코딩을 사용하는 데이터 메이저 토토 사이트만 관심이 있습니다. 기타 항목pg_메이저 토토 사이트무시됩니다. 따라서 다음과 같은 제거된 데이터 메이저 토토 사이트 이름은de_DE전체적으로 고유하지 않더라도 특정 데이터베이스 내에서는 고유한 것으로 간주될 수 있습니다. 다른 데이터베이스 인코딩으로 변경하기로 결정한 경우 변경해야 할 항목이 하나 줄어들기 때문에 제거된 데이터 메이저 토토 사이트 이름을 사용하는 것이 좋습니다. 그러나 참고하세요.기본값, C그리고POSIX데이터 메이저 토토 사이트은 데이터베이스 인코딩에 관계없이 사용될 수 있습니다.

PostgreSQL동일한 속성을 가지고 있더라도 고유한 데이터 메이저 토토 사이트 개체가 호환되지 않는 것으로 간주합니다. 따라서 예를 들어,

a 대조 "C" 선택 < b test1에서 "POSIX" 대조;

다음에도 오류가 발생합니다C그리고POSIX메이저 토토 사이트은 동일한 동작을 갖습니다. 따라서 제거된 데이터 정렬 이름과 제거되지 않은 데이터 정렬 이름을 혼합하는 것은 권장되지 않습니다.

23.2.2.2.2. ICU 데이터 메이저 토토 사이트#

ICU에서는 가능한 모든 로케일 이름을 열거하는 것이 합리적이지 않습니다. ICU는 로케일에 특정 명명 시스템을 사용하지만 실제로 별개의 로케일보다 로케일의 이름을 지정하는 방법이 더 많습니다.initdbICU API를 사용하여 고유한 로케일 세트를 추출하여 초기 데이터 메이저 토토 사이트 세트를 채웁니다. ICU에서 제공하는 데이터 메이저 토토 사이트은 SQL 환경에서 BCP 47 언어 태그 형식의 이름으로 생성됩니다.개인 사용확장-x-iculibc 로케일과 구별하기 위해 추가되었습니다.

다음은 생성될 수 있는 데이터 메이저 토토 사이트의 예입니다:

de-x-icu #

독일어 조합, 기본 변형

de-AT-x-icu #

오스트리아에 대한 독일어 데이터 메이저 토토 사이트, 기본 변형

(또한, 말하자면,de-DE-x-icu또는de-CH-x-icu, 하지만 이 글을 쓰는 시점에서는 다음과 동일합니다.de-x-icu.)

und-x-icu(for정의되지 않음) #

중환자실루트조합. 이를 사용하여 언어에 구애받지 않는 합리적인 메이저 토토 사이트 순서를 얻으세요.

일부(덜 자주 사용되는) 인코딩은 ICU에서 지원되지 않습니다. 데이터베이스 인코딩이 다음 중 하나인 경우 ICU 데이터 메이저 토토 사이트 항목은pg_메이저 토토 사이트무시됩니다. 하나를 사용하려고 하면 다음과 같은 오류가 발생합니다."WIN874" 인코딩을 위한 데이터 메이저 토토 사이트 "de-x-icu"가 존재하지 않습니다.

23.2.2.3. 새 데이터 메이저 토토 사이트 개체 만들기#

표준 및 사전 정의된 데이터 메이저 토토 사이트이 충분하지 않은 경우 사용자는 SQL 명령을 사용하여 자신만의 데이터 메이저 토토 사이트 개체를 생성할 수 있습니다.콜렉션 생성.

표준 및 사전 정의된 데이터 메이저 토토 사이트은 스키마에 있습니다pg_catalog, 사전 정의된 모든 객체와 같습니다. 사용자 정의 데이터 메이저 토토 사이트은 사용자 스키마에서 생성되어야 합니다. 이는 또한 다음을 통해 저장되도록 보장합니다.pg_dump.

23.2.2.3.1. libc 데이터 메이저 토토 사이트#

새로운 libc 대조는 다음과 같이 생성될 수 있습니다:

CREATE COLLATION 독일어(공급자 = libc, 로케일 = 'de_DE');

에 대해 허용되는 정확한 값로케일32141_32233로케일 -a목록이 표시됩니다.

사전 정의된 libc 데이터 메이저 토토 사이트에는 데이터베이스 인스턴스가 초기화될 때 운영 체제에 정의된 모든 데이터 메이저 토토 사이트이 이미 포함되어 있으므로 수동으로 새 데이터 메이저 토토 사이트을 생성할 필요가 없는 경우가 많습니다. 다른 명명 시스템이 필요한 경우가 이유일 수 있습니다(이 경우에는 다음 항목도 참조하세요).섹션 23.2.2.3.3) 또는 새로운 로케일 정의를 제공하기 위해 운영 체제가 업그레이드된 경우(이 경우에는 다음 항목도 참조pg_import_system_메이저 토토 사이트s()).

23.2.2.3.2. ICU 데이터 메이저 토토 사이트#

ICU 데이터 메이저 토토 사이트은 다음과 같이 생성될 수 있습니다:

CREATE COLLATION 독일어(공급자 = icu, 로케일 = 'de-DE');

ICU 로케일은 BCP 47로 지정됩니다.언어 태그이지만 대부분의 libc 스타일 로케일 이름도 사용할 수 있습니다. 가능하다면 libc 스타일 로케일 이름은 언어 태그로 변환됩니다.

새로운 ICU 데이터 메이저 토토 사이트은 언어 태그에 데이터 메이저 토토 사이트 속성을 포함하여 데이터 메이저 토토 사이트 동작을 광범위하게 사용자 정의할 수 있습니다. 참조섹션 23.2.3자세한 내용과 예시를 확인하세요.

23.2.2.3.3. 데이터 메이저 토토 사이트 복사#

명령어콜렉션 생성또한 기존 데이터 메이저 토토 사이트에서 새 데이터 메이저 토토 사이트을 생성하는 데 사용할 수 있습니다. 이는 애플리케이션에서 운영 체제 독립적인 데이터 메이저 토토 사이트 이름을 사용하거나, 호환성 이름을 생성하거나, 더 읽기 쉬운 이름으로 ICU 제공 데이터 메이저 토토 사이트을 사용하는 데 유용할 수 있습니다. 예를 들면:

"de_DE"에서 독일어 콜레이션 생성;
"fr-x-icu"에서 프랑스어 콜레이션 생성;

23.2.2.4. 비결정적 데이터 메이저 토토 사이트#

조합은 다음 중 하나입니다.결정적또는비결정적. 결정적 데이터 메이저 토토 사이트은 결정적 비교를 사용합니다. 즉, 문자열이 동일한 바이트 시퀀스로 구성된 경우에만 동일한 것으로 간주합니다. 비결정적 비교에서는 문자열이 서로 다른 바이트로 구성되어 있어도 동일한 것으로 판단할 수 있습니다. 일반적인 상황에는 대소문자를 구분하지 않는 비교, 악센트를 구분하지 않는 비교 및 ​​다양한 유니코드 정규 형식의 문자열 비교가 포함됩니다. 이러한 둔감한 비교를 실제로 구현하는 것은 데이터 메이저 토토 사이트 공급자의 몫입니다. 결정론적 플래그는 바이트별 비교를 사용하여 연결이 끊어질지 여부만 결정합니다. 또한 참조하세요유니코드 기술 표준 10용어에 대한 자세한 내용을 확인하세요.

비결정적 대조를 생성하려면 속성을 지정하십시오.결정적 = 거짓콜렉션 생성, 예:

CREATE COLLATION ndcoll (공급자 = icu, 로케일 = 'und', 결정적 = false);

이 예는 비결정적인 방식으로 표준 유니코드 대조를 사용합니다. 특히 이를 통해 다양한 정규 형식의 문자열을 올바르게 비교할 수 있습니다. 더 흥미로운 예는 위에서 설명한 ICU 사용자 정의 기능을 사용하는 것입니다. 예를 들면:

CREATE COLLATION case_insensitive(제공자 = icu, 로케일 = 'und-u-ks-level2', 결정적 = false);
COLLATION 생성ignore_accents(공급자 = icu, 로케일 = 'und-u-ks-level1-kc-true', 결정적 = false);

모든 표준 및 사전 정의된 데이터 메이저 토토 사이트은 결정적이며 모든 사용자 정의 데이터 메이저 토토 사이트은 기본적으로 결정적입니다. 비결정적 데이터 메이저 토토 사이트은 더 많은 것을 제공하지만맞습니다동작, 특히 유니코드의 모든 기능과 그 많은 특수 사례를 고려할 때 몇 가지 단점도 있습니다. 무엇보다도 이를 사용하면 성능이 저하됩니다. 특히 B-트리는 비결정적 데이터 메이저 토토 사이트을 사용하는 인덱스에는 중복 제거를 사용할 수 없습니다. 또한 일부 패턴 일치 작업과 같은 비결정적 데이터 메이저 토토 사이트에서는 특정 작업이 불가능합니다. 그러므로 특별히 원하는 경우에만 사용해야 합니다.

다양한 유니코드 정규화 형식의 텍스트를 처리하려면 함수/표현식을 사용하는 것도 옵션입니다.정규화그리고정규화됨비결정적 데이터 메이저 토토 사이트을 사용하는 대신 문자열을 전처리하거나 확인합니다. 각 접근 방식에는 서로 다른 장단점이 있습니다.

23.2.3. ICU 사용자 정의 데이터 메이저 토토 사이트#

ICU는 언어 태그의 일부로 데이터 메이저 토토 사이트 설정을 사용하여 새로운 데이터 메이저 토토 사이트을 정의하여 데이터 메이저 토토 사이트 동작을 광범위하게 제어할 수 있습니다. 이러한 설정을 통해 다양한 요구 사항에 맞게 메이저 토토 사이트 순서를 수정할 수 있습니다. 예를 들어:

-- 악센트와 대소문자의 차이를 무시합니다.
CREATE COLLATIONignore_accent_case(공급자 = icu, 결정적 = false, 로케일 = 'und-u-ks-level1');
SELECT 'Å' = 'A' COLLATEignore_accent_case; -- 사실
SELECT 'z' = 'Z' COLLATEignore_accent_case; -- 사실

-- 대문자가 소문자보다 먼저 메이저 토토 사이트됩니다.
CREATE COLLATION upper_first (공급자 = icu, locale = 'und-u-kf-upper');
SELECT 'B' < 'b' COLLATE upper_first; -- 사실

-- 숫자를 숫자로 처리하고 구두점을 무시합니다.
CREATE COLLATION num_ignore_punct(공급자 = icu, 결정적 = false, 로케일 = 'und-u-ka-shifted-kn');
SELECT 'id-45' < 'id-123' COLLATE num_ignore_punct; -- 사실
SELECT 'w;x*y-z' = 'wxyz' COLLATE num_ignore_punct; -- 사실이다

사용 가능한 많은 옵션은 다음에 설명되어 있습니다.섹션 23.2.3.2또는 참조섹션 23.2.3.5자세한 내용은.

23.2.3.1. ICU 비교 수준#

ICU의 두 문자열(조합) 비교는 텍스트 기능이 "레벨"로 그룹화되는 다중 레벨 프로세스에 의해 결정됩니다. 각 수준의 처리는 다음과 같이 제어됩니다.조합 설정. 수준이 높을수록 텍스트 기능이 더 세밀해집니다.

표 23.1은 주어진 수준에서 동등성을 결정할 때 어떤 텍스트 기능 차이가 중요한 것으로 간주되는지 보여줍니다. 유니코드 문자U+2063은 보이지 않는 구분 기호이며 표에서 볼 수 있듯이 다음보다 작은 모든 비교 수준에서 무시됩니다.동일함.

표 23.1. ICU 대조 수준

레벨 설명 'f' = 'f' 'ab' = U&'a\2063b' 'x-y' = 'x_y' 'g' = 'G' 'n' = 'ñ' 'y' = 'z'
레벨1 기본 문자 거짓
레벨2 악센트 거짓 거짓
레벨3 사례/변형 거짓 거짓 거짓
레벨4 구두점[a] 거짓 거짓 거짓 거짓
동일함 모두 거짓 거짓 거짓 거짓 거짓

[a]다음에만ka-shifted; 참조표 23.2


모든 수준에서 전체 정규화가 꺼진 상태에서도 기본 정규화가 수행됩니다. 예를 들어,'á'코드 포인트로 구성될 수 있음U&'\0061\0301'또는 단일 코드 포인트U&'\00E1', 해당 시퀀스는 다음에서도 동일한 것으로 간주됩니다.동일함레벨. 코드 포인트 표현의 차이를 별개로 처리하려면 다음으로 생성된 데이터 메이저 토토 사이트을 사용하세요.결정적다음으로 설정됨.

23.2.3.1.1. 데이터 메이저 토토 사이트 수준 예#
CREATE COLLATION level3(공급자 = icu, 결정적 = false, 로케일 = 'und-u-ka-shifted-ks-level3');
CREATE COLLATION level4 (공급자 = icu, 결정적 = false, 로케일 = 'und-u-ka-shifted-ks-level4');
CREATE COLLATION identic(공급자 = icu, 결정적 = false, 로캘 = 'und-u-ka-shifted-ks-identic');

-- 동일 항목을 제외한 모든 수준에서 보이지 않는 구분 기호가 무시됩니다.
SELECT 'ab' = U&'a\2063b' 대조 레벨4; -- 사실
SELECT 'ab' = U&'a\2063b' COLLATE 동일; -- 거짓

-- 레벨 3에서는 구두점이 무시되지만 레벨 4에서는 무시되지 않습니다.
SELECT 'x-y' = 'x_y' COLLATE 레벨3; -- 사실
SELECT 'x-y' = 'x_y' COLLATE 레벨4; -- 거짓

23.2.3.2. ICU 로케일에 대한 대조 설정#

표 23.2데이터 메이저 토토 사이트을 사용자 정의하기 위해 언어 태그의 일부로 사용할 수 있는 데이터 메이저 토토 사이트 설정을 표시합니다.

표 23.2. ICU 대조 설정

열쇠 기본값 설명
이모지, phonebk, 표준, ... 표준 조합 유형. 참조섹션 23.2.3.5추가 옵션 및 세부정보를 확인하세요.
noignore, 이동 무시 다음으로 설정된 경우이동, 비교 시 일부 문자(예: 구두점 또는 공백)가 무시됩니다. 키ks다음으로 설정되어야 함레벨349022_49058kv무시되는 문자 클래스를 제어합니다.
kb 사실, 거짓 거짓 레벨 2 차이점에 대한 역방향 비교. 예: 로케일und-u-kb메이저 토토 사이트'àe'이전에'아에'.
kc 사실, 거짓 거짓

사례를 악센트와 기타 레벨 3 기능 사이에 있는 "레벨 2.5"로 분리합니다.

다음으로 설정된 경우그리고ks다음으로 설정됨레벨1, 악센트는 무시하지만 대소문자는 고려합니다.

kf 상위, 하위, 거짓 거짓 다음으로 설정된 경우상위, 대문자가 소문자보다 먼저 메이저 토토 사이트됩니다. 으로 설정된 경우하위, 소문자는 대문자보다 먼저 메이저 토토 사이트됩니다. 으로 설정된 경우거짓, 메이저 토토 사이트은 로케일 규칙에 따라 다릅니다.
kn , 거짓 거짓 다음으로 설정된 경우, 문자열 내의 숫자는 일련의 숫자가 아닌 단일 숫자 값으로 처리됩니다. 예를 들어,'id-45'이전 메이저 토토 사이트'id-123'.
kk , 거짓 거짓

완전 정규화 활성화; 성능에 영향을 미칠 수 있습니다. 로 설정된 경우에도 기본 정규화가 수행됩니다.거짓. 전체 정규화가 필요한 언어의 로케일은 일반적으로 기본적으로 활성화됩니다.

전체 정규화는 단일 문자에 여러 악센트가 적용되는 경우와 같은 경우에 중요합니다. 예를 들어, 코드 포인트 시퀀스U&'\0065\0323\0302'그리고U&'\0065\0302\0323'대표e곡선 악센트와 점 아래 악센트가 다른 순서로 적용됩니다. 전체 정규화가 활성화되면 이러한 코드 포인트 시퀀스는 동일하게 처리됩니다. 그렇지 않으면 불평등합니다.

kr 공간, 점수, 기호, 통화, 자리, 스크립트-ID

하나 이상의 유효한 값 또는 BCP 47로 설정스크립트-ID, 예:라틴("라틴어") 또는그리스어("그리스어"). 여러 값은 "로 구분됩니다.-".

문자 클래스의 순서를 재정의합니다; 목록의 앞부분에 있는 클래스에 속하는 문자는 목록의 뒷부분에 있는 클래스에 속하는 문자보다 먼저 메이저 토토 사이트됩니다. 예를 들어 값은숫자-통화-공간(다음과 같은 언어 태그의 일부로und-u-kr-digit-currency-space)은 숫자와 공백 앞의 구두점을 메이저 토토 사이트합니다.

ks 레벨1, 레벨2, 레벨3, 레벨4, 동일함 레벨3 동등성을 결정할 때의 민감도(또는 "강도"), with레벨1차이에 가장 덜 민감하며동일함차이에 가장 민감합니다. 참조표 23.1자세한 내용은.
kv 공간, 점점, 기호, 통화 점수 레벨 3에서 비교하는 동안 문자 클래스가 무시됩니다. 나중 값으로 설정하면 이전 값이 포함됩니다. 예를 들어기호또한 포함점점그리고공간무시할 문자에 있습니다. 키다음으로 설정되어야 함이동및 키ks다음으로 설정되어야 함레벨3적용하려면 그 이하입니다.

기본값은 로케일에 따라 달라질 수 있습니다. 위의 표는 완전하지 않습니다. 참조섹션 23.2.3.5추가 옵션 및 세부정보를 확인하세요.

참고

많은 데이터 메이저 토토 사이트 설정의 경우 다음을 사용하여 데이터 메이저 토토 사이트을 생성해야 합니다.결정적다음으로 설정됨거짓설정이 원하는 효과를 얻으려면(참조섹션 23.2.2.4). 또한 일부 설정은 키를 누른 경우에만 적용됩니다.다음으로 설정됨이동(참조표 23.2).

23.2.3.3. 대조 설정 예#

컬렉션 생성 "de-u-co-phonebk-x-icu"(제공자 = icu, 로케일 = 'de-u-co-phonebk'); #

전화번호부 대조 유형을 사용한 독일어 대조

컬렉션 생성 "und-u-co-emoji-x-icu"(제공자 = icu, 로케일 = 'und-u-co-emoji'); #

유니코드 기술 표준 #51에 따른 Emoji 데이터 메이저 토토 사이트 유형을 사용한 루트 데이터 메이저 토토 사이트

컬렉션 생성 latinlast (공급자 = icu, 로케일 = 'en-u-kr-grek-latn'); #

그리스 문자를 라틴 문자보다 먼저 메이저 토토 사이트하세요. (기본값은 그리스어 이전의 라틴어입니다.)

컬렉션 생성 upperfirst (공급자 = icu, 로케일 = 'en-u-kf-upper'); #

대문자를 소문자보다 먼저 메이저 토토 사이트하세요. (기본값은 소문자부터 시작됩니다.)

CREATE COLLATION 특수(공급자 = icu, 로케일 = 'en-u-kf-upper-kr-grek-latn'); #

위의 두 가지 옵션을 모두 결합합니다.

23.2.3.4. ICU 조정 규칙#

위에 표시된 데이터 메이저 토토 사이트 설정에서 제공하는 옵션이 충분하지 않은 경우 데이터 메이저 토토 사이트 요소의 순서는 맞춤 규칙을 사용하여 변경할 수 있습니다. 해당 구문은 다음에 자세히 설명되어 있습니다.https://unicode-org.github.io/icu/userguide/collation/customization/.

이 작은 예는 조정 규칙을 사용하여 루트 로케일을 기반으로 대조를 생성합니다.

CREATE COLLATION 사용자 정의(공급자 = icu, 로케일 = 'und', 규칙 = '&V << w <<< W');

이 규칙에 따라 편지W다음에 메이저 토토 사이트됨V, 그러나 악센트와 유사한 2차 차이로 처리됩니다. 이와 같은 규칙은 일부 언어의 로캘 정의에 포함되어 있습니다. (물론, 로캘 정의에 이미 원하는 규칙이 포함되어 있으면 명시적으로 다시 지정할 필요가 없습니다.)

여기에 더 복잡한 예가 있습니다. 다음 문은라는 이름의 데이터 메이저 토토 사이트을 설정합니다.ebcdicUS-ASCII 문자를 EBCDIC 인코딩 순서대로 메이저 토토 사이트하는 규칙이 있습니다.

CREATE COLLATION ebcdic (제공자 = icu, 로케일 = 'und',
규칙 = $$
& ' ' < '.' < '<' < '(' < '+' < \|
< '&' < '!' < '$' < '*' < ')' < ';'
< '-' < '/' < ',' < '%' < '_' < '' < '?'
< '`' < ':' < '#' < '@' < \' < '=' < '"'
<*a-r < '~' <*s-z < '^' < '[' < ']'
< '' <*A-I < '' <*J-R < '\' <*S-Z <*0-9
$$);

선택 c
FROM (VALUES ('a'), ('b'), ('A'), ('B'), ('1'), ('2'), ('!'), ('^')) AS x(c)
c로 메이저 토토 사이트 ebcdic;
 ㄷ
---
 !
 에
 비
 ^
 에이
 비
 1
 2

23.2.3.5. ICU에 대한 외부 참조#

이 섹션(섹션 23.2.3)은 ICU 동작 및 언어 태그에 대한 간략한 개요입니다. 기술 세부정보, 추가 옵션 및 새로운 동작에 대해서는 다음 문서를 참조하세요.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.