SQLのlike演算子では、ワイルドカードとして解釈させたくない「%」や「_」をエスケープする必要があります。 じゃあエスケープ文字として何を使えばいいんだろうか?という話になりますが、それに関して昔自分がやった失敗を思い出しました。 自分がやった失敗というのは、エスケープ文字として「%」を使おうとしたことです。SQL文で「'」を「'」でエスケープするのと同じようにすればよいだろうと考えた訳です。 例えば「20%以内」を含むデータを検索するSQL文を以下のように書きました。 ... WHERE foobar LIKE '%20%%以内%' ESCAPE '%';データベースの種類にもよりますが、これはこれで期待したとおりに動きます。 しかし、このSQL文を見てふと思ったのが、「%」を含むデータを検索したい場合にどうなるんだろうか?ということです。 ためしに書いてみると、こんな感じになるはず