10.1.7.8 데이터 정렬의 효과의 예
예 1 : 독일어 움라우트 정렬
테이블 T
의 컬럼 X
에 다음 latin1
컬럼의 값이 설정되어 있다고합니다.
Muffler Müller MX Systems MySQL
또한 다음 문을 사용하여 컬럼의 값을 얻을 수 있다고합니다.
SELECT X FROM T ORDER BY X COLLATE collation_name
;
다음 표에는 다른 데이터 정렬 ORDER BY
를 사용했을 경우 얻을 수있는 값의 순서를 보여줍니다.
latin1_swedish_ci | latin1_german1_ci | latin1_german2_ci |
---|---|---|
Muffler | Muffler | Müller |
MX Systems | Müller | Muffler |
Müller | MX Systems | MX Systems |
MySQL | MySQL | MySQL |
이 예에서 정렬 순서의 차이를 빚고있는 문자는 머리에 2 개의 점이 붙은 U ( ü
)이며, 이것은 독일어로 "U 움라우트"라고하는 것입니다.
첫 번째 열에는 스웨덴어 / 핀란드어 조합 룰을 사용했다
SELECT
의 결과가 나타나고 있습니다. 이 조합 룰에 따르면, U 움라우트는 Y와 정렬 순서가 일치합니다.두 번째 열에는 German DIN-1 룰을 사용했다
SELECT
의 결과가 나타나고 있습니다. 이 조합 룰에 따르면, U 움라우트는 U와 정렬 순서가 일치합니다.세 번째 열에는 German DIN-2 룰을 사용했다
SELECT
의 결과가 나타나고 있습니다. 이 조합 룰에 따르면, U 움라우트는 UE와 정렬 순서가 일치합니다.
예 2 : 독일어 움라우트 검색
사용되는 문자 셋과 콜레 션 만 다른 세 개의 테이블이 있다고합니다.
mysql>SET NAMES utf8;
mysql>CREATE TABLE german1 (
->c CHAR(10)
->) CHARACTER SET latin1 COLLATE latin1_german1_ci;
mysql>CREATE TABLE german2 (
->c CHAR(10)
->) CHARACTER SET latin1 COLLATE latin1_german2_ci;
mysql>CREATE TABLE germanutf8 (
->c CHAR(10)
->) CHARACTER SET utf8 COLLATE utf8_unicode_ci;
각 테이블에는 다음 두 개의 레코드가 포함됩니다.
mysql>INSERT INTO german1 VALUES ('Bar'), ('Bär');
mysql>INSERT INTO german2 VALUES ('Bar'), ('Bär');
mysql>INSERT INTO germanutf8 VALUES ('Bar'), ('Bär');
위의 데이터 정렬의 2 개에는 A = Ä
의 등식이 포함 1 개에는 이러한 등식은 없습니다 ( latin1_german2_ci
). 따라서 비교는 다음의 결과를 얻을 수 있습니다.
mysql>SELECT * FROM german1 WHERE c = 'Bär';
+------+ | c | +------+ | Bar | | Bär | +------+ mysql>SELECT * FROM german2 WHERE c = 'Bär';
+------+ | c | +------+ | Bär | +------+ mysql>SELECT * FROM germanutf8 WHERE c = 'Bär';
+------+ | c | +------+ | Bar | | Bär | +------+
이것은 버그가 아니라 latin1_german1_ci
및 utf8_unicode_ci
정렬 프로퍼티의 결과입니다 (표시된 정렬은 German DIN 5007 표준에 따라 이루어지고 있습니다).