MySQLのCollation(照合)を決める際に知っておくべきこと。
欲しいデータを引っ張りだすときにテーブル同士をJOINでひっつけます。
その際にMySQLでは、対象データを照らしあわせるために一定の文字コードで行いますが、これを使い分けないとエラい目にあいます。
たいてい日本語で使用するのは「utf8_bin」、「utf8_general_ci」、「utf8_unicode_ci」だとおもいますが、それぞれマッチの仕方がちがいます。
ざっくり言うと以下のような感じ。
- utf8_bin
完全一致 - utf8_general_ci
アルファベットの大文字、小文字を区別せずにマッチさせる。
全半角の小文字同士がマッチしない。 - utf8_unicode_ci
全半角関係なくアルファベット大文字、小文字がマッチ。
かな、カタカナは大小関係なくマッチさせる。
なんかヘンなクセがあります。
理解に役立つ、参考になるのは以下のサイト。
『MySQLのCollationを理解するためにまとめてみた。』
utf-8だけじゃなく、cp932_japanese_ciの末尾にある“_ci”についても詳しい。
「collationって何?」って人はまずここヨメ的な。
実際にデータを作って、Selectして検証してます。
こういうのをさらっとできちゃう人って本物だなと感心します。
UTF-8ベースで検証。
日本語ならとりあえず「utf8_unicode_ci」ぶち込んどけ!っていうのはシロウト。
なんつうか、ステートメントでCOLLATE使ってるとなんかカッコいいw
べつに意味はないけど、なんとなく…