这是我当前的 SQL 语句:
SEARCH_ALBUMS_SQL = "SELECT * FROM albums WHERE title LIKE ? OR artist LIKE ?;";
它会返回与专辑或艺术家姓名完全匹配的内容,但不会返回任何其他内容。我不能在语句中使用“%”,否则会出错。
如何在准备好的语句中添加通配符?
(我正在使用 Java5 和 MySQL)
谢谢!
这是我当前的 SQL 语句:
SEARCH_ALBUMS_SQL = "SELECT * FROM albums WHERE title LIKE ? OR artist LIKE ?;";
它会返回与专辑或艺术家姓名完全匹配的内容,但不会返回任何其他内容。我不能在语句中使用“%”,否则会出错。
如何在准备好的语句中添加通配符?
(我正在使用 Java5 和 MySQL)
谢谢!
您将 % 放在绑定变量中。所以你也是
stmt.setString(1, "%" + likeSanitize(title) + "%");
stmt.setString(2, "%" + likeSanitize(artist) + "%");
您应该添加ESCAPE '!' 允许您在输入中转义与LIKE相关的特殊字符。
在使用标题或艺术家之前,您应该使用以下方法转义特殊字符( !、%、_和[ )来清理它们(如上所示):
public static String likeSanitize(String input) {
return input
.replace("!", "!!")
.replace("%", "!%")
.replace("_", "!_")
.replace("[", "![");
}