java - 带参数的 VertX SQL 查询如何使用 LIKE?带通配符

标签 java sql hsqldb vert.x

我正在开发一个简单的 VertX 应用程序。我有一个 hsqlDB,我正在尝试执行一个查询,我想从名称包含搜索参数的表中获取所有 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 '%' || ? || '%'";

关于java - 带参数的 VertX SQL 查询如何使用 LIKE?带通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55286364/

相关文章:

mysql - 使用 MySQL Workbench 6.2 将 HSQLDB 迁移到 MySQL

java - JPA 抛出 - "ERROR: user lacks privilege or object not found: BOOK"

java - Protocol Buffer 3 : Enums as keys in a map

mysql - SQL查询时间范围

MySQL 错误 : field is ambiguos (code 1052)

java - 使用 HSQLDB 作为 Spring、Hibernate 的可移植数据库

java - 为什么链表的头属性设置为transient

java - 在后台运行一段时间后关闭应用程序

java - 如何在 iOS 上的 Turbo 模块中发出事件

php - Mysql删除查询只删除一行中的两列