Я работаю над простым приложением VertX. У меня есть hsqlDB, и я пытаюсь выполнить запрос, в котором я хочу получить все идентификаторы из таблицы, где имя содержит параметр поиска
String sql = "SELECT ID FROM MYTABLE WHERE NAME LIKE ?";
Так что это работает, когда Имя совпадает с?
Когда я пытаюсь использовать подстановочные знаки:
String sql = "SELECT ID FROM MYTABLE WHERE NAME LIKE %?%";
или
String sql = "SELECT ID FROM MYTABLE WHERE NAME LIKE '%?%'";
это не работает.
Мой код:
private void getIDsBySearchString(String search, SQLConnection conn, Handler<AsyncResult<Vector<Integer>>> resultHandler) {
String sql = "SELECT ID FROM MYTABLE WHERE NAME LIKE ?";
conn.queryWithParams(sql, new JsonArray().add(search), asyncResult -> {
if(asyncResult.failed()) {
resultHandler.handle(Future.failedFuture("No Names Found"));
} else {
int numRows = asyncResult.result().getNumRows();
if(numRows >= 1) {
Vector<Integer> IDVector = new Vector<>();
for(int i = 0; i < numRows; i++) {
int id = asyncResult.result().getRows().get(i).getInteger("ID");
IDVector.add(id);
}
resultHandler.handle(Future.succeededFuture(IDVector));
} else {
resultHandler.handle(Future.failedFuture("No Names found"));
}
}
});
}
Как мне нужно отредактировать строку запроса так? будет заменен строкой поиска, и я смогу использовать подстановочные знаки?