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