MySQL の collate utf8_unicode_ci で「スズキ」がマッチしない
Rails 3.2.13 + MySQL 5 を使っています。
MySQL の Collation が collate utf8_unicode_ci となっています。
この機能の存在自体知らなくて全角カタカナのデータに対し全角平仮名で検索マッチしたのでびっくりしました。
で、とあるお客様のデータは半角カタカナで登録されていました。(不吉な匂い!?)
それでもいい感じで検索してくれるのですが、なぜか「スズキ」や「すずき」がマッチしないことが判明しました。
> User.where("kana LIKE '%スズキ%'").count
(4.1ms) SELECT COUNT(*) FROM `users` WHERE (kana LIKE '%スズキ%')
=> 42
> User.where("kana LIKE '%すずき%'").count
(2.6ms) SELECT COUNT(*) FROM `users` WHERE (kana LIKE '%すずき%')
=> 0
> User.where("kana LIKE '%スズキ%'").count
(2.6ms) SELECT COUNT(*) FROM `users` WHERE (kana LIKE '%スズキ%')
=> 0
> pp User.where("kana LIKE '%スズキ%'").limit(10).map{|x| x.kana.sub(/...$/, 'xxx')}
User Load (1.1ms) SELECT `users`.* FROM `users` WHERE (kana LIKE '%スズキ%') LIMIT 10
["スズキ xxx",
"スズキxxx",
"スズキタケxxx",
"スズキxxx",
"スズキノxxx",
"スズキリュxxx",
"スズキxxx",
"スズxxx",
"スズキ タxxx",
"スズキ xxx"]
これは何故でしょうか?ご教示頂ければ幸いです。
ちなみに「フクダ/ふくだ」はマッチします...
User.where("kana LIKE '%フクダ%'").count # => 9
User.where("kana LIKE '%ふくだ%'").count # => 9
User.where("kana LIKE '%フクダ%'").count # => 9
ググると最近の記事、「utf8_unicode_ci に対する日本の開発者の見解」が気になってます。