- PR -

PreparedStatementでlike検索を行う場合

1
投稿者投稿内容
tdaisuke
会議室デビュー日: 2004/03/15
投稿数: 13
投稿日時: 2004-03-15 20:53
標題の件ですが、以下のSQLを発行しましたがうまくいきません。
エラーメッセージは「ORA-01006: バインド変数がありません。」です。

String sql = "select * from tb_sy a, tb_syml b where a.sy_syain_no like '?%' " ;
〜略〜
ps.setString(1, syain_no);

like検索ではシングルコーテーション''を使用すると思いますので、そのせいでシングルコーテーション''内の?をsetStringするときに認識してくれないようです。

どなたかいい方法を知らないでしょうか?
ちなみにOracle9iです。
tdaisuke
会議室デビュー日: 2004/03/15
投稿数: 13
投稿日時: 2004-03-15 20:55
自己レスです。96となっている箇所はパーセントです。うまく表示されず96に変換されてしまいました。
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2004-03-15 21:27
ここが参考になると思います。


カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2004-03-16 17:13
引用:

tdaisukeさんの書き込み (2004-03-15 20:53) より:
String sql = "select * from tb_sy a, tb_syml b where a.sy_syain_no like '?%' " ;
〜略〜
ps.setString(1, syain_no);



String sql = "select * from tb_sy a, tb_syml b where a.sy_syain_no like ? " ;
〜略〜
ps.setString(1, syain_no + "%");

でどうでしょう?
または、

String sql = "select * from tb_sy a, tb_syml b where a.sy_syain_no like ? || '%' " ;
〜略〜
ps.setString(1, syain_no);

とか。
tdaisuke
会議室デビュー日: 2004/03/15
投稿数: 13
投稿日時: 2004-03-16 18:37
ありがとうございます。どの方法でもうまくいきました。
1

スキルアップ/キャリアアップ(JOB@IT)