10月
15
2012

MySQLでひらがな、カタカナ、大文字、小文字、全角、半角を区別しないで検索する方法

例えば、「りんご」という商品がDBに登録されている場合に、
ひらがなで検索すればよいのか、カタカナで検索すればよいのかわからなくなるときがあります。

MySQLでは、照合順序にutf8_unicode_ciを指定することで、似た文字を同一視して扱い、どちらでも検索することができます。

たとえば、
・「りんご」「リンゴ」「リンゴ」「りンゴ」
・「ABC」「ABC」「abc」「Abc」
・「123」「123」「123」
など、半角、全角、ひらがな、カタカナ、大文字、小文字も関係なく、検索にヒットさせることができるようになります。

utf8_unicode_ciの使用方法

utf8_unicode_ciは、テーブル定義の時に指定することができますが、
検索時に指定することも可能です。

例)

select * from item where item_name collate utf8_unicode_ci like '%りんご%';

DBのitem_nameに「りんご」「リンゴ」「リンゴ」「りンゴ」で登録されていても、検索することができます。

utf8_unicode_ciでできること

・アルファベットが、半角/全角、大文字/小文字にかかわらず、検索可能
・数字が、半角/全角にかかわらず、検索可能
・平仮名、カタカナ、半角カナにかかわらず、検索可能
※同一視される文字が他にもあるため、広範囲で検索にヒットするため、注意も必要です
 例)「つ」「っ」なども同一視
 例)「は」「パ」「バ」などの濁点等も同一視

同一視される文字の一覧

以下に同一視される文字の表がまとめられています。
http://tmtm.org/tmp/mysql_unicode_collation.html

参考

http://d.hatena.ne.jp/end0tknr/20100613/1276427626
http://tmtms.hatenablog.com/entry/20110416/mysql_u……_collation
http://tmtm.org/tmp/mysql_unicode_collation.html

1 Comment + Add Comment

コメントする

メールアドレスは公開されません。

このエントリーをはてなブックマークに追加