我正在编写一个从数据库中获取记录的程序。我想创建一个基于 3 个变量(学生 ID、名字和/或姓氏)的动态查询。这是我返回记录的java代码:
result = statement.executeQuery("SELECT * FROM student "
+ "WHERE (studentID = "
+ getStudentId() + " AND " + getStudentId() + " <> 0)"
+ " OR (firstName = '"
+ getFirstName() + "' AND '" + getFirstName() + "' IS NOT NULL)"
+ " OR (lastName = '"
+ getLastName() + "' AND '" + getLastName() + "' IS NOT NULL)");
我想要的是搜索根据存在的变量返回模糊到具体的结果。目前,如果 studentID 是唯一提供的字段,则返回该单条记录,或者如果 studentID 不存在但 firstName 存在,则返回按 firstName 的所有记录(如果仅存在变量,则 lastName 相同)。不起作用的是,如果我提供 firstName 和 lastName,它会返回所有带有 firstName 的记录,而不管记录的姓氏如何,以及带有 lastName 的所有记录,无论名字是什么。示例 firstName = "Bill" 和 lastName = "Jackson":
1 Bill Hader
2 Steve Jackson
3 Bill Jackson
4 Bill Stewart
5 Denise Jackson
6 Wendy Jackson
7 Bill Matthews
我想弄清楚的是,如果我提供特定的标准,例如名字和姓氏,如何获取包含指定的名字和姓氏的一个特定记录。