Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


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 とソート順が一致します。

  • 2 番目のカラムには、German DIN-1 ルールを使用した SELECT の結果が示されています。この照合ルールによると、U ウムラウトは U とソート順が一致します。

  • 3 番目のカラムには、German DIN-2 ルールを使用した SELECT の結果が示されています。この照合ルールによると、U ウムラウトは UE とソート順が一致します。

例 2: ドイツ語のウムラウトの検索

使用される文字セットと照合順序だけが異なる次の 3 つのテーブルがあるとします。

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;

各テーブルには次の 2 つのレコードが含まれます。

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_ciutf8_unicode_ci のソートプロパティーの結果です (示されたソートは、German DIN 5007 標準に従って行われています)。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.