9

这是我当前的 SQL 语句:

SEARCH_ALBUMS_SQL = "SELECT * FROM albums WHERE title LIKE ? OR artist LIKE ?;";

它会返回与专辑或艺术家姓名完全匹配的内容,但不会返回任何其他内容。我不能在语句中使用“%”,否则会出错。

如何在准备好的语句中添加通配符?

(我正在使用 Java5 和 MySQL)

谢谢!

4

1 回答 1

19

您将 % 放在绑定变量中。所以你也是

   stmt.setString(1, "%" + likeSanitize(title) + "%");
   stmt.setString(2, "%" + likeSanitize(artist) + "%");

您应该添加ESCAPE '!' 允许您在输入中转义与LIKE相关的特殊字符。

在使用标题艺术家之前,您应该使用以下方法转义特殊字符( !%_[ )来清理它们(如上所示):

public static String likeSanitize(String input) {
    return input
       .replace("!", "!!")
       .replace("%", "!%")
       .replace("_", "!_")
       .replace("[", "![");
} 
于 2008-11-29T17:55:52.630 回答