スキップしてメイン コンテンツに移動

collation(照合順序)とはソート順(=文字コードの大小を比較する)を定めたルールのことで複数から選んで利用するもの

データベースでは collation という言葉を良く目にする。
これを日本語では照合順序と言うらしい。

自分なりの定義(経験を踏まえていくつかのページを参照した結果):

  • collation とは照合順序のことでソート順(=文字コードの大小比較)を定めたルール。
  • 国や場面によって文字列のソート順が異なるため、複数のルールが存在する
  • データベース内にあらかじめ組み込まれている
  • 実際、照合順序(collation)はソート順(order by)に影響する。

具体的に考えるときにイメージしやすい良いページがあった。

[MySQLウォッチ]第37回 文字コードに起因する問題は文字化けだけじゃない,ソート順とcollationの関係

※末尾にポイントとなる箇所を抜粋して引用
  • 単にこのページを読むだけでなくデータベースの操作経験があったほうがいい。
  • オープンソースで手軽に試すなら MySQL を phpMyAdmin で操作してみる。
  • その際は XAMPP を使えば環境準備が簡単。
  • 学習環境&演習環境としてオススメ。
他に参考にした主なサイト

9.1. 一般のキャラクタセットおよび照合順序
照合順序とは、キャラクタセット内の文字を比較するためのルールを集めたものです。

照合順序の使用

照合順序は、特定の言語とロケールの基準に基づいて、文字データの文字列の並べ替え方法および比較方法に関する規則を指定します。


(抜粋して引用)


ソート処理での文字コードの影響

文字には,大文字と小文字のように同じ文字ながら,単語や文書での位置によって体裁が変わる場合がある。また,海外では,地域によって,アルファベット の並びが異なったり,文字自体が異なったりする言語もある。例えば,キートップの刻印が,国や地域によって異なるのはご存知だろうか。
そのため,文字コード以外に,文字コード毎に文字の順番を規定するためのデータベースが用意されている。それが,キャラクタセットの照合順序であ り,MySQLではcollationとして,システムに格納されている。図1のように show collation; を実行すると,格納されているcollationが参照できる。
図1●collationの一覧(MySQL5.0.24)

mysql> show collation;
+----------------------+----------+-----+---------+----------+---------+
| Collation            | Charset  | Id  | Default | Compiled | Sortlen |
+----------------------+----------+-----+---------+----------+---------+
| big5_chinese_ci      | big5     |   1 | Yes     | Yes      |       1 |
| big5_bin             | big5     |  84 |         | Yes      |       1 |
:
| latin1_german1_ci | latin1 | 5 | | Yes | 1 | | latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 | | latin1_danish_ci | latin1 | 15 | | Yes | 1 | | latin1_german2_ci | latin1 | 31 | | Yes | 2 | | latin1_bin | latin1 | 47 | | Yes | 1 | | latin1_general_ci | latin1 | 48 | | Yes | 1 | | latin1_general_cs | latin1 | 49 | | Yes | 1 | | latin1_spanish_ci | latin1 | 94 | | Yes | 1 |
:
| ascii_general_ci | ascii | 11 | Yes | | 0 | | ascii_bin | ascii | 65 | | | 0 | | ujis_japanese_ci | ujis | 12 | Yes | Yes | 1 | | ujis_bin | ujis | 91 | | Yes | 1 | | sjis_japanese_ci | sjis | 13 | Yes | Yes | 1 | | sjis_bin | sjis | 88 | | Yes | 1 |
:
| utf8_general_ci | utf8 | 33 | Yes | Yes | 1 | | utf8_bin | utf8 | 83 | | Yes | 1 | | utf8_unicode_ci | utf8 | 192 | | Yes | 8 | | utf8_icelandic_ci | utf8 | 193 | | Yes | 8 | | utf8_latvian_ci | utf8 | 194 | | Yes | 8 | | utf8_romanian_ci | utf8 | 195 | | Yes | 8 | | utf8_slovenian_ci | utf8 | 196 | | Yes | 8 | | utf8_polish_ci | utf8 | 197 | | Yes | 8 | | utf8_estonian_ci | utf8 | 198 | | Yes | 8 | | utf8_spanish_ci | utf8 | 199 | | Yes | 8 | | utf8_swedish_ci | utf8 | 200 | | Yes | 8 | | utf8_turkish_ci | utf8 | 201 | | Yes | 8 | | utf8_czech_ci | utf8 | 202 | | Yes | 8 | | utf8_danish_ci | utf8 | 203 | | Yes | 8 | | utf8_lithuanian_ci | utf8 | 204 | | Yes | 8 | | utf8_slovak_ci | utf8 | 205 | | Yes | 8 | | utf8_spanish2_ci | utf8 | 206 | | Yes | 8 | | utf8_roman_ci | utf8 | 207 | | Yes | 8 | | utf8_persian_ci | utf8 | 208 | | Yes | 8 | | utf8_esperanto_ci | utf8 | 209 | | Yes | 8 | | utf8_hungarian_ci | utf8 | 210 | | Yes | 8 |
:
| binary | binary | 63 | Yes | Yes | 1 | | geostd8_general_ci | geostd8 | 92 | Yes | | 0 | | geostd8_bin | geostd8 | 93 | | | 0 | | cp932_japanese_ci | cp932 | 95 | Yes | Yes | 1 | | cp932_bin | cp932 | 96 | | Yes | 1 | | eucjpms_japanese_ci | eucjpms | 97 | Yes | Yes | 1 | | eucjpms_bin | eucjpms | 98 | | Yes | 1 | +----------------------+----------+-----+---------+----------+---------+ 126 rows in set (0.00 sec)
MySQL5.0では,126種類のCollationが用意されている。一つの文字コードに複数のCollationが用意されているのが分かる。例 えば,MySQLのデフォルト文字コードであるlatin1は,8種類も用意されている。Collationの命名規則は,"文字コード_言語名_比較 法"となっている。比較方法は,表1のような意味を持つ。
表1●Collationの比較法
ci 大文字小文字を区別しない
cs 大文字小文字を区別する
bin バイナリコードで比較する
例えば,ujis文字コードは,ujis_japanese_ciとujis_binの2種類のCollationが用意されている。これは,日本語用 の大文字小文字を区別するものとバイナリコードで区別するものというのが分かる。日本語用の文字コードは,日本語専用なので,海外の文字コードのように, 言語による照合順序の違いはないので,どれも2種類だけだ。但し,UTF8は,各国語共通なので,21種類ものCollationがある。

コメント

このブログの人気の投稿

Microsoft Access 2013 以降ではmdbファイルを扱えない→旧バージョンで変換しよう

Microsoft Access のデータ形式が新しくなったことは知っていたが、古い形式のデータベースファイル(mdbファイル)を扱えなくなったことは知らなかった ネットの情報によると、mdbファイルをサポートしなくなった模様 Access2013からは、それまでのAccessにあった「古い形式(mdbファイル)からの変換機能」が削除されているらしい mdbファイルを開こうとすると次のメッセージが表示される 前のバージョンのアプリケーションで作成されたデータベースを開くことはできません 次の事例のように何とか変換する方法はあるらしい Access 2013 Access 97 ファイル形式のmdbをなんとかする http://mukkumuku.blogspot.jp/2013/01/access-2013-access-97-file-format.html 「DAO 3.6 を使用することができるから、これを使う。」 どうもプログラミングしているようなので、Access2013より古いバージョンが手元にあれば、それを使うのが手っ取り早いと思う ちなみに、古いバージョンの中でもファイル形式のバージョンに違いがあるらしい 例えばAccess2003を使ってテーブル解析(メニューバー>ツール>解析>データベース構造の解析)をする場合にmdbファイルの変換が必要だった その際のメッセージは次のとおり このデータベースは Access97 以前のバージョンで作成されている。このデータベースでデータベース構造の解析を行うには、先に、Access 2000 以降の形式にデータベースを変換する必要があります Microsoft Access 2003の場合、「ツール>データベースユーティリティ>データベースの変換」を実行するが、選択可能なファイル形式として次の3つが表示された Access97 Access2000 Access2002-2003  実行すると保存先とファイル名を確認してくる(別名保存)ので、そのまま開くことは出来ない模様 この変換機能はmdbファイルを開かなくても操作できるので、単体の変換ツールという位置づけと思う 古いバージョンのファイルに随分冷たい扱いだなぁ、と変な感覚を持ってしまっ

HTML:alt 属性内でのシングルクォーテーションとダブルクォーテーションの使い方

HTML の属性はダブルクォーテーションかシングルクォーテーションで囲む ダブルクォーテーション → " シングルクォーテーション → ' HTML の属性内にシングルクォーテーションを記述できる。 <img src="..." alt="Taro's Cafe"> HTML の属性内にダブルクォーテーションを記述できる <img src='...' alt='"Shop"'> 混在時はダブルクォーテーションの代わりに &quot; を使う <img src="..." alt="Taro's &quot;Shop&quot;">  ※逆も可かな? 参考サイト タグに関する基礎知識

【フォトショップ】「要求された操作を完了できません。プログラムエラーです。」のエラーを回避できた

1.現象 ・編集した画像を別名保存でbmpにしようとしたら「要求された操作を完了できません。プログラムエラーです。」のメッセージが表示された ・今までも何回か発生していたが、フォトショップの再起動などで回避できていた ・今回はそれでは改善せず、画像を読み込んで何もせず別名保存しても発生した 2.設定ファイルを削除する方法では解決できなかった ・グーグルで検索すると設定ファイルが壊れているため、という情報が多くヒットした ・試して改善しなかった 3.同じサイズの画像を新規作成して回避できた ・エラーが起きた画像のレイヤーを新規作成した画像に複製 ・別名保存…エラーは発生しなかった 4.その後、エラーは発生しなくなった ・参考にしたページではエラーがおき続けているようだ  → Photoshop ver7.0.1 でプログラムエラーが出て画像を保存できない時の対処方法  ・こちらの環境で何故エラーが起きなくなったか、具体的な理由は不明のまま 5.補足:環境設定ファイルを削除した状態でテストしていたので、元に戻してみた ・エラーが起きて、それを回避して、エラーが起きなくなって…と予想していたが… ・なんと、エラーは起きなくなっていた ・このことからも「今回は環境設定ファイルは無関係だった」ことがわかりますね ・環境設定ファイルを削除すると影響が大きい人はこの方法を先にお試しを!