このページは機械翻訳したものです。
例 1: ドイツ語のウムラウトのソート
テーブル T
のカラム X
に次の latin1
カラムの値が設定されているとします。
Press CTRL+C to copyMuffler Müller MX Systems MySQL
さらに、次のステートメントを使用してカラムの値を取得するとします。
Press CTRL+C to copySELECT 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 とソート順が一致します。2 番目のカラムには、German DIN-1 ルールを使用した
SELECT
の結果が示されています。この照合ルールによると、U ウムラウトは U とソート順が一致します。3 番目のカラムには、German DIN-2 ルールを使用した
SELECT
の結果が示されています。この照合ルールによると、U ウムラウトは UE とソート順が一致します。
例 2: ドイツ語のウムラウトの検索
使用される文字セットと照合順序だけが異なる次の 3 つのテーブルがあるとします。
Press CTRL+C to copymysql> 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;
各テーブルには次の 2 つのレコードが含まれます。
Press CTRL+C to copymysql> 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
)。 そのため、比較では次の結果が得られます。
Press CTRL+C to copymysql> 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 標準に従って行われています)。