内容
mysqlの照合順序に関して、自分でも試してみた結果を載せようと思ったけど、網羅できているのか疑問、且つ照合順序に関しては詳しい記事が既にたくさんあるので記事に載せるのは断念。
結論から言うと、
- 日本語を検索する場合:
general_ci
(unicode_ciだと濁点・半濁点のものにもマッチしてしまう) - アルファベットを検索する場合:
unicode_ci
(全角・半角、大文字・小文字にマッチする)
がよさそう。ただアルファベットを全角でDBに入れることってあまりなさそうなので、何れにせよgeneral_ci
でいいのかなと思った。
アルファベットの大文字と小文字を区別したいときはutf8-bin
なのかな。
補足
こちらを参考にすると、
-
utf8_general_ci
: 単純に比較する -
utf8_unicode_ci
: 似たような文字を同じ文字として扱う
ので、utf8_unicode_ci
だと、は
で検索した時にば
とぱ
もマッチするのだろうか。
データベース名設定時の「utf8 / utf8_general_ci」とは? / 文字セット(文字コード名)と照合順位のまとめ
あと大文字小文字がマッチするのは_ci
がcase insensitive
だからで、_cs
(case sensitive)ならマッチしないとのこと。
参考
【MySQL】照合順序とは?
MySQLの照合順序
MySQLの文字コードとCollationMySQL Forums :: Character Sets, Collation, Unicode :: utf8 unicode ci vs utf8 general ci