SELECT * FROM hoge WHERE name LIKE '%ABC%';
よくあるLIKEを利用した全文検索のSQLはこのようになります。
この場合ですと name の中身が`ABC`の場合はマッチしますが、`ABC`の場合はマッチしないので非常に厄介です。
ローマ字だけではなく数字、カタカナ、記号も同様でMySQLには変換する関数が無いので自前で行おうとした場合はストアドプロシージャを作らなければなりません。
そんなときには以下のような形に変えましょう。
SELECT * FROM hoge WHERE name collate utf8_unicode_ci LIKE '%ABC%';
LIKEの前に`collate utf8_unicode_ci`を付けるだけでローマ字(大文字/小文字 全角/半角)、数字、カタカナ、記号全てで半角、全角両方にマッチするようになります。
ストアドプロシージャを作るよりもはるかに楽ですね。
EXPLAIN をしたわけでは無いですが体感では速度はそんなに違いは無かったです。
ただし「つ」と「っ」や「は」「パ」「バ」などの濁点もマッチしてしまうのでここだけ注意ですね。