1

这失败了:
db.prepareStatement("SELECT * FROM " + table + " WHERE " + column + " LIKE '?%'");

因为?不被识别为值的占位符。我应该如何解决这个问题?

4

3 回答 3

6

将通配符放在变量中,而不是语句中,例如:

stmt = db.prepareStatement("SELECT * FROM " + table + " WHERE " + column + " LIKE ?");
stmt.setString(1, "myterm%");
于 2012-12-28T20:25:34.100 回答
0

尝试将百分号作为 LIKE 参数的一部分:

db.prepareStatement("SELECT * FROM " + table + " WHERE " + column + " LIKE ?"); 

我不太喜欢这个查询。我认为以这种方式连接表和列不会节省太多。

于 2012-12-28T20:27:42.730 回答
0

将您的值传递给CONCAT()函数:

db.prepareStatement("SELECT * FROM " + table 
    + " WHERE " + column 
  + " LIKE CONCAT(?, '%')");

这样做的好处是进行调用的代码不需要知道参数是否与 LIKE 一起使用,因此您可以将相同的参数值用于其他非 LIKE 查询。

于 2012-12-28T20:47:26.410 回答