ちょっと前にLIKE検索の記事を書いたのですが、それの続きです。
前回のLIKE検索の記事では、escapeSingleQuotesを使うことでSOQLインジェクション対策はできるけど、LIKE検索時の特殊文字"%"は検索文字列として使えないので置換して対応する必要があります。という内容を書いていました。
Force.com SOQL および SOSL リファレンスを確認してみると、特殊文字には"%"以外にも"_"が使えるとの記載があります。(3ページのあたりです。)
ということで、"_"の文字も「.replace('_', '\\_')」という感じで置換してバインド変数で検索するようにしておくと良さそうです。