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