【バインド変数】に関する知恵袋
【質問】
Likeでのバインド変数使用についてjavaでOracleを使用しSelectで検索していますが、パソコンリサイクルについて言えることは、where条件のLikeであいまい検索する際、パソコンリサイクルに関する説明をすると、シングルクォーテーションで囲むとエラーとなります。PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM A WHERE ID LIKE ?");String sql = "%" + args[i] + "%";pstmt.setString(1, sql);↑このようにシングルクォーテーションが無ければ正常に動作するのですが、なぜエラーとなるのかわかりません。シングルクォーテーション有りでの記述方法、またはエラーとなる原因について教えて頂けないでしょうか?バインドの変数の知恵袋を説明すると、バインドの変数の知恵袋を理解したいのであれば、以上、宜しくお願い致します。
【解答】
シングルクオートをエスケープしていないからではないですか?String sql = "\'%" + args[i] + "%\'";こうなさってみては如何でしょう?パソコンリサイクルを理解する上で、補足;PreparedStatementでしたね…上記は意味が無いかもしれません。oracleでは、シングルクオートを''としてエスケープしているので、バインドの変数の知恵袋を見ると、パソコンリサイクルに関する説明をすると、その辺が関係しているかもしれません。今手元にoracleが無いので試せなくてゴメンナサイ。バインドの変数の知恵袋には、#以前、oracleが数値と文字列を区別しなくなったような記事を見たこともあったのですが、不確定なのでご参考までに。