- PR -

SQLパラメータ

1
投稿者投稿内容
ジン
ベテラン
会議室デビュー日: 2007/07/27
投稿数: 52
投稿日時: 2007-10-10 14:57
ORACLEのSQLでLIKE文を使用する際、String型でSQLパラメータで値を埋め込みたいのですが
SQLの不正のエラーで終了してしまいます。

SetStringで'(シングルコーテーション)を自動で付加している為と思いますが。
LIKE文でSQLパラメータを使用する方法はあるのですか??

SQL>
SELECT * FROM TABLENAME WHERE ID LIKE '%?%'

埋め込み>
stmt.SetString(1,"999");


ちなみに
"SELECT * FROM TABLENAME WHERE ID LIKE '%" + "999" + "%'"
の書き方は出来れば使用したくありません。

ご教授お願いします。
こあら
大ベテラン
会議室デビュー日: 2007/06/26
投稿数: 157
投稿日時: 2007-10-10 15:34
引用:
SetStringで'(シングルコーテーション)を自動で付加している為


これが本当なら「Like ?」にすれば良いのでは?
ジン
ベテラン
会議室デビュー日: 2007/07/27
投稿数: 52
投稿日時: 2007-10-10 15:40
そうですね

SELECT * FROM TABLENAME WHERE ID LIKE ?

stmt.SetString(1,"%999%");

でいいですね…
なんか申し訳ないです。
早速試してみます。
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2007-10-10 15:49
そのままではありませんが、

コード:
こんな表から
SQL> select * from test;

      COL1 COL2
---------- ----------
         1 AB123C
         2 DEF999GHI



コード:
こんな指定で
    :
String sql = "select col1, col2 from test where col2 like ?";
    :
    :
pstmt.setString(1, "%999%");
    :



コード:
こんな結果が出せました
C:\\Java>java com.test.SelectDate
2       DEF999GHI



_________________
もしもし@RMAN 友の会
ジン
ベテラン
会議室デビュー日: 2007/07/27
投稿数: 52
投稿日時: 2007-10-11 09:06
こあらさん、もしもしさんありがとうございます。
意図した結果になりました。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-10-11 13:50
Oracleでは試していませんが、
WHERE XXX like '%' || ? || '%'
みたいな方法もいかがでしょうか。

?にバインドする値は、どのみちワイルドカードのエスケープが必要ですが、
入力値使うことができますよ。
1

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