2016-10-23 3 views
2

Ich habe eine Suchanfrage, die eine Spalte in einer Tabelle durchsuchen Such enthält. Für die Spalte gibt es den Indextyp ctxsys.context. Während Abrufen von Daten auf dem Tisch vorbereitete Anweisung verwendet wird, ist die Suchanfrage wie Sonderzeichen verarbeiten nicht in der Lage -, /, _ usw.Java Prepared Statement mit CONTAINS Query

Hier ist mein Code -

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

Der Code funktioniert für Text Fein welches keine Sonderzeichen hat.

Wenn ich die folgende Abfrage in sqlDeveloper ausführen, läuft es gut.

Bitte schlagen Sie vor, welche Änderungen ich in der vorbereiteten Anweisung vornehmen soll, damit es auch für Sonderzeichen funktioniert.

Antwort

1

Bitte beziehen Sie sich auf diese Frage zur Verwendung enthält in vorbereiteten Anweisung. PreparedStatement with CONTAINS query

Sie haben in Ihrer Abfrage Flucht zu verwenden, wenn die oben didint Arbeit wie

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

Referenz von http://www.jguru.com/faq/view.jsp?EID=8881

+0

yeah..tried mit that..but nicht verstehen, wie kann es Arbeit für mich –

+0

Danke Rahul..Ich versuche diese Lösung aus, aber einige Probleme zu bekommen..wird versuchen, es zu arbeiten ... gemäß den Vorschlägen sollten wir den Escape-Teil am Ende der Abfrage hinzufügen ..ich bin wahrscheinlich etwas vermissen –

Verwandte Themen