【MySQL】でひらがな、カタカナ、大文字、小文字、全角、半角を区別したい。

結構ハマったのでメモ。

何も考えずにカラムの照合順序を「utf8_unicode_ci」にしていた所、MySQLの有難すぎる仕様が判明。

たとえば「テスト」という文字列で特定カラムをselectすると、上記の型の場合

「テスト」、「てすと」、「テスト」、「てスト」の全てにヒットしてしまうらしい。というかヒットした。

アルファベットも同様、「ABC」を検索すると

「ABC」、「ABC」、「abc」、「ABc」がヒットし、

数値「123」の場合

「123」、「123」、「123」といった具合にヒットする。

今回はあくまでも完全一致のみを引っ張ってきてほしかったため、解決方法を探した所
カラムの照合順序を「utf8_bin」に変更すればOKとのことが判明。

変更後、無事完全一致で引っ張ることができた。

場合によってはとても便利な仕様だけどもしっかりと把握しておくべき重要なポイントだね。