mysql » COLLATEの意味

COLLATEとは照合順序のことです。データベースへクエリを送信して結果を受け取る場合、結果の並べ方の細かい指定をする場合に使います。例えば、大文字小文字を区別してソートするとか、区別しないでソートするとか、日本語だとひらがなとカタカナを区別するかどうかなど指定することができます。

MySQLサーバでは複数のキャラクタセットがサポートされています。利用可能なキャラクタセットは、SHOW CHARACTER SETステートメントを実行するとリストアップされます。リストの一部を以下に表示します。

mysql> SHOW CHARACTER SET;
+———-+—————————–+———————+——–+
| Charset  | Description                 | Default collation   | Maxlen |
+———-+—————————–+———————+——–+
| big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |
| dec8     | DEC West European           | dec8_swedish_ci     |      1 |
| cp850    | DOS West European           | cp850_general_ci    |      1 |
| hp8      | HP West European            | hp8_english_ci      |      1 |
| koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |
| latin1   | cp1252 West European        | latin1_swedish_ci   |      1 |
| latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 |
| swe7     | 7bit Swedish                | swe7_swedish_ci     |      1 |
| ascii    | US ASCII                    | ascii_general_ci    |      1 |
| ujis     | EUC-JP Japanese             | ujis_japanese_ci    |      3 |
| sjis     | Shift-JIS Japanese          | sjis_japanese_ci    |      2 |
| hebrew   | ISO 8859-8 Hebrew           | hebrew_general_ci   |      1 |
| tis620   | TIS620 Thai                 | tis620_thai_ci      |      1 |
| euckr    | EUC-KR Korean               | euckr_korean_ci     |      2 |
| koi8u    | KOI8-U Ukrainian            | koi8u_general_ci    |      1 |
| gb2312   | GB2312 Simplified Chinese   | gb2312_chinese_ci   |      2 |
| greek    | ISO 8859-7 Greek            | greek_general_ci    |      1 |
| cp1250   | Windows Central European    | cp1250_general_ci   |      1 |
| gbk      | GBK Simplified Chinese      | gbk_chinese_ci      |      2 |
| latin5   | ISO 8859-9 Turkish          | latin5_turkish_ci   |      1 |
…

キャラクタセットには少なくとも1つの照合順序が含まれており、複数の照合順序が含まれていることもあります。あるキャラクタセットに対して存在する照合順序をリストアップするには、SHOW COLLATIONステートメントを実行してください。例えば、キャラクタセットlatin1(cp1252 西ヨーロッパ言語)に含まれる照合順序を調べるには、このステートメントを実行するとlatin1で始まる照合順序が見つかります。

mysql> SHOW COLLATION LIKE 'latin1%';
+———————+———+—-+———+———-+———+
| Collation           | Charset | Id | Default | Compiled | Sortlen |
+———————+———+—-+———+———-+———+
| latin1_german1_ci   | latin1  |  5 |         |          |       0 |
| latin1_swedish_ci   | latin1  |  8 | Yes     | Yes      |       1 |
| latin1_danish_ci    | latin1  | 15 |         |          |       0 |
| latin1_german2_ci   | latin1  | 31 |         | Yes      |       2 |
| latin1_bin          | latin1  | 47 |         | Yes      |       1 |
| latin1_general_ci   | latin1  | 48 |         |          |       0 |
| latin1_general_cs   | latin1  | 49 |         |          |       0 |
| latin1_spanish_ci   | latin1  | 94 |         |          |       0 |
+———————+———+—-+———+———-+———+

latin1の照合順序には以下の意味があります:



照合順序 意味
latin1_german1_ci ドイツ語 DIN-1
latin1_swedish_ci スウェーデン語/フィンランド語
latin1_danish_ci デンマーク語/ノルウェー語
latin1_german2_ci ドイツ語 DIN-2
latin1_bin latin1エンコードに基づくバイナリ
latin1_general_ci マルチリンガル(西ヨーロッパ言語)
latin1_general_cs マルチリンガル(ISO 西ヨーロッパ言語)大文字と小文字が区別される
latin1_spanish_ci 現代スペイン語

照合順序にはこれらの一般的な特徴があります。

  • 2つの異なるキャラクタセットが同じ照合順序を共有することはできません。

  • 各キャラクタセットには、デフォルト照合順序が1つ存在します。例えば、latin1のデフォルト照合順序はlatin1_swedish_ciです。SHOW CHARACTER SETから、どの照合順序が表示されているどのキャラクタセットのデフォルトであるかがわかります。

  • 照合順序名には次の規則が適用されます。関連するキャラクタセットの名前で始まる。通常は言語名が含まれており、_ci(大文字と小文字が区別されない)、_cs(大文字と小文字が区別される)、_bin(バイナリ)のいずれかで終わる。




関連商品