2016-10-23 9 views
2

contains searchを使用してテーブル内の列を検索する必要がある検索クエリがあります。列にctxsys.context型のインデックスがあります。プリペアドステートメントを使用して、テーブル上のデータをフェッチしている間に、検索クエリは次のように特殊文字を処理することができません - ここでは、/、_などCONTAINSクエリでJava Prepared Statement

を私のコードです -

String query = "select * from parties where contains (party_name ,'%' || ? || '%')>0"; 
PreparedStatement ps = con.prepareStatement(query); 
ps.setString(1, searchName); 

コードは、テキストのため正常に動作します特殊文字はありません。

次のクエリをsqlDeveloperで実行すると問題なく動作します。

select * from parties where contains(party_name,'c/o')>0; 

特殊文字にも変更が加えられていることをご確認ください。

答えて

1

準備文でのcontainsの使用方法については、この質問を参照してください。 PreparedStatement with CONTAINS query

は、あなたはどのようにそれができるthat..butは理解していなかった場合は、上記のdidint作業

SELECT * FROM BIRDS WHERE SPECIES='Williamson's Sapsucker 
statement.executeQuery("SELECT * FROM BIRDS WHERE SPECIES='Williamson/'s Sapsucker' {escape '/'}"); 

同様の参照 http://www.jguru.com/faq/view.jsp?EID=8881

+0

を使用してyeah..triedからクエリでエスケープを使用する必要があります –

+0

ありがとうRahul ..私はこの解決策を試していますが、いくつかの問題を取得しています。それは働くようにしようとします...私たちはクエリの最後にエスケープ部分を追加するべき提案に従って...私はおそらく何か不足 –

関連する問題