这失败了:db.prepareStatement("SELECT * FROM " + table + " WHERE " + column + " LIKE '?%'");
因为?
不被识别为值的占位符。我应该如何解决这个问题?
这失败了:db.prepareStatement("SELECT * FROM " + table + " WHERE " + column + " LIKE '?%'");
因为?
不被识别为值的占位符。我应该如何解决这个问题?
将通配符放在变量中,而不是语句中,例如:
stmt = db.prepareStatement("SELECT * FROM " + table + " WHERE " + column + " LIKE ?");
stmt.setString(1, "myterm%");
尝试将百分号作为 LIKE 参数的一部分:
db.prepareStatement("SELECT * FROM " + table + " WHERE " + column + " LIKE ?");
我不太喜欢这个查询。我认为以这种方式连接表和列不会节省太多。
将您的值传递给CONCAT()
函数:
db.prepareStatement("SELECT * FROM " + table
+ " WHERE " + column
+ " LIKE CONCAT(?, '%')");
这样做的好处是进行调用的代码不需要知道参数是否与 LIKE 一起使用,因此您可以将相同的参数值用于其他非 LIKE 查询。