10.4 문자 세트에 데이터 정렬 추가
데이터 정렬은 문자열을 비교 및 정렬하는 방법을 정의한 일련의 규칙입니다. MySQL에서의 각각의 데이터 정렬은 단일 문자 집합에 속해 있습니다. 모든 문자 집합은 하나의 데이터 정렬이 속한 대부분의 문자 세트는 두 개 이상의 데이터 정렬이 속해 있습니다.
데이터 정렬은 가중치에 따라 문자를 정렬합니다. 문자 집합의 각 문자가 무게에 매핑되어 있습니다. 가중치가 동일한 문자는 동등한 것으로 간주 가중치가 동일하지 않은 문자는 그 무게의 상대적인 크기에 따라 비교됩니다.
WEIGHT_STRING()
함수를 사용하면 문자열에서 문자의 가중치를 확인할 수 있습니다. 무게를 나타낸 반환되는 값은 이진 문자열이기 때문에, HEX(WEIGHT_STRING(
을 사용하여 무게를 출력 할 수있는 형식으로 표시하면 편리합니다. 다음 예제는 대소 문자를 구별하지 않는 바이너리가 아닌 문자열 인 경우는 str
))'AaBb'
의 대문자와 소문자로 무게는 다르지 않지만, 이진 문자열이면 다른 것을 나타냅니다.
mysql>SELECT HEX(WEIGHT_STRING('AaBb' COLLATE latin1_swedish_ci));
+------------------------------------------------------+ | HEX(WEIGHT_STRING('AaBb' COLLATE latin1_swedish_ci)) | +------------------------------------------------------+ | 41414242 | +------------------------------------------------------+ mysql>SELECT HEX(WEIGHT_STRING(BINARY 'AaBb'));
+-----------------------------------+ | HEX(WEIGHT_STRING(BINARY 'AaBb')) | +-----------------------------------+ | 41614262 | +-----------------------------------+
섹션 10.4.1 "데이터 정렬의 구현 유형" 에서 설명하는 것처럼, MySQL은 여러 데이터 정렬의 구현을 지원하고 있습니다. 이 중 일부는 다시 컴파일하지 않고 MySQL에 추가 할 수도 있습니다.
8 비트 문자 세트의 간단한 데이터 정렬.
Unicode 캐릭터 세트의 UCA 기반 데이터 정렬.
바이너리 (
) 데이터 정렬.xxx
_bin
다음 섹션에서는 처음 두 종류의 데이터 정렬을 기존 문자 세트에 추가하는 방법을 설명합니다. 이진 데이터 정렬은 기존의 문자 세트도 이미 준비되어 있기 때문에 여기에서는 추가 방법은 설명하지 않습니다.
새로운 데이터 정렬을 추가하는 방법 요약 :
데이터 정렬 ID를 선택합니다.
데이터 정렬 이름을 지정 구성 정보를 추가하고 문자 순서 규칙에 대해 설명합니다.
서버를 다시 시작합니다.
데이터 정렬이 존재하는지 확인합니다.
여기에서의 설명은 MySQL을 재 컴파일 할 필요없이 추가 할 데이터 정렬만을 다룹니다. 재 컴파일을 필요로하는 데이터 정렬 (C 소스 파일의 함수를 이용하여 구현 된 것 등)을 추가하려면 섹션 10.3 "문자 세트 추가" 단계를 사용하십시오. 그러나 완전한 문자 세트에 필요한 모든 정보를 추가하는 것이 아니라 기존의 문자 집합에 따라 적절한 파일을 변경합니다. 즉, 문자 집합의 현재 데이터 정렬 이미 존재하는 것에 따라 새로운 데이터 정렬 데이터 구조, 함수, 구성 정보를 추가합니다.
기존의 데이터 정렬을 변경하면 데이터 정렬을 사용하는 컬럼에 인덱스의 행 순서에 영향을 줄 수 있습니다. 이 경우 잘못된 쿼리 결과 등의 문제가 일어나지 않도록 이러한 인덱스를 다시 작성하십시오. 자세한 내용은 섹션 2.11.3 "테이블 또는 인덱스 재구성이 필요한지 확인" 을 참조하십시오.
추가 리소스
Unicode 데이터 정렬 알고리즘 (UCA) 사양 : http://www.unicode.org/reports/tr10/
Locale Data Markup Language (LDML) 사양 : http://www.unicode.org/reports/tr35/
MySQL 블로그 기사 "새로운 Unicode 데이터 정렬을 추가하는 단계": http://blogs.mysql.com/peterg/2008/05/19/instructions-for-adding-a-new-unicode-collation/