VertX SQL query With Params 如何使用 LIKE ?带通配符
VertX SQL queryWithParams Howto use LIKE ? with wildards
我正在开发一个简单的 VertX 应用程序。我有一个 hsqlDB,我正在尝试执行一个查询,我想从 Table 中获取所有 ID,其中名称包含搜索参数
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"));
}
}
});
}
我需要如何编辑我的查询字符串?将被搜索字符串替换,我将能够使用通配符?
参数不能在带引号的字符串中。它可以是涉及其他字符串的连接表达式的一部分。
String sql = "SELECT ID FROM MYTABLE WHERE NAME LIKE '%' || ? || '%'";
应该更改的部分是您的 search
参数,而不是 sql
部分:
String sql = "SELECT ID FROM MYTABLE WHERE NAME LIKE ?";
conn.queryWithParams(sql, new JsonArray().add("%"+search+"%"), asyncResult -> { ... }
我正在开发一个简单的 VertX 应用程序。我有一个 hsqlDB,我正在尝试执行一个查询,我想从 Table 中获取所有 ID,其中名称包含搜索参数
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"));
}
}
});
}
我需要如何编辑我的查询字符串?将被搜索字符串替换,我将能够使用通配符?
参数不能在带引号的字符串中。它可以是涉及其他字符串的连接表达式的一部分。
String sql = "SELECT ID FROM MYTABLE WHERE NAME LIKE '%' || ? || '%'";
应该更改的部分是您的 search
参数,而不是 sql
部分:
String sql = "SELECT ID FROM MYTABLE WHERE NAME LIKE ?";
conn.queryWithParams(sql, new JsonArray().add("%"+search+"%"), asyncResult -> { ... }