我必须在我的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);
答案 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);
代替。