MySQLのunique属性で大文字や小文字が区別されない問題を解決

MySQLで重複しないデータを登録するためのフィールド属性として「UNIQUE」があります。

確かに日本語データでは問題ないのですが、半角アルファベットで「ABC」のデータがある状態で新たに「abc」を登録しようとすると次のように「Duplicate entry」エラーが出ます。

Duplicate entry 'abc' for key 2

これをエラーが出ないように登録するためには、フィールドにBINARY属性を付与することで回避することができます。 テーブル名を「my_table」、フィールドをVARCHAR型で「my_field」とした場合の例です。

ALTER TABLE `my_table` MODIFY `my_field` VARCHAR(255) BINARY;

新しくテーブルを作成する段階でBINARY属性をつけるには次のようにします。

CREATE TABLE `my_table` (
  `my_field` VARCHAR(255) BINARY
);

これでちゃんとアルファベットの大文字と小文字を区別してくれるようになりますよ!

このページをシェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2011-04-18