我有一个搜索查询,它必须使用搜索表中的列。列上有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;
请建议我应该在准备好的声明中做些什么修改,以使它也适用于特殊字符。
发布于 2016-10-23 04:02:23
请参阅关于如何使用准备好的声明中的内容的问题。PreparedStatement with CONTAINS query
您必须在查询中使用转义,如果上面的didint工作如下
SELECT * FROM BIRDS WHERE SPECIES='Williamson's Sapsucker
statement.executeQuery("SELECT * FROM BIRDS WHERE SPECIES='Williamson/'s Sapsucker' {escape '/'}");
https://stackoverflow.com/questions/40202463
复制相似问题