带有CONTAINS查询的Java Prepared语句

时间:2016-10-23 11:37:25

标签: java sql oracle jdbc prepared-statement

我有一个搜索查询,必须使用包含搜索来搜索表格中的列。列上有ctxsys.context类型索引。使用预准备语句在表上获取数据时,搜索查询无法处理特殊字符,如 - ,/,_等。

这是我的代码 -

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 个答案:

答案 0 :(得分:1)

请参阅此问题,如何在准备好的声明中使用contains。 PreparedStatement with CONTAINS query

如果上述方法有效,则必须在查询中使用escape 像

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

的参考资料