SQL模糊搜索

时间:2014-06-30 10:35:00

标签: java sql fuzzy-search

我必须在我的Java程序中调用SQL数据库搜索。

检索条件是用户输入字符串部分匹配NAME字段而不区分大小写。例如,如果用户输入“joe”,则应返回名称为“Joea”,“Bjoe”,“JOEED”的学生记录。

虽然我试图编写代码如下。它似乎无法解决。

有人可以告诉我为什么吗?感谢。

String fuzzySearch = "UPPER(%" + inputStr + "%)";
String query = "SELECT * FROM student WHERE UPPER(student.name) LIKE ? ";
PreparedStatement prepStatement = con.prepareStatement(query.toString());
prepStatement.setObject(1,fuzzySearch);

1 个答案:

答案 0 :(得分:3)

当您使用字符串绑定变量时,您说

WHERE UPPER(student.name) LIKE 'UPPER(%joe%)'

而不是

WHERE UPPER(student.name) LIKE UPPER('%joe%')

所以使用

String fuzzySearch = "%" + inputStr + "%";
String query = "SELECT * FROM student WHERE UPPER(student.name) LIKE UPPER(?) ";
PreparedStatement prepStatement = con.prepareStatement(query.toString());
prepStatement.setObject(1,fuzzySearch);

代替。