【问题标题】:VertX SQL queryWithParams Howto use LIKE ? with wildardsVertX SQL 查询与参数如何使用 LIKE ?带通配符
【发布时间】:2019-03-21 17:45:50
【问题描述】:

我正在开发一个简单的 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"));
            }
        }
    });
}

我需要如何编辑我的查询字符串以便 ?将被搜索字符串替换,我将能够使用通配符?

【问题讨论】:

    标签: java sql hsqldb vert.x


    【解决方案1】:

    参数不能在带引号的字符串内。它可以是包含其他字符串的 concat 表达式的一部分。

    String sql = "SELECT ID FROM MYTABLE WHERE NAME LIKE '%' || ? || '%'";
    

    【讨论】:

      【解决方案2】:

      应该更改的部分是您的search 参数,而不是sql 部分:

      String sql = "SELECT ID FROM MYTABLE WHERE NAME LIKE ?";
      
      conn.queryWithParams(sql, new JsonArray().add("%"+search+"%"), asyncResult -> { ... }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-12
        • 2012-02-22
        • 2017-06-28
        • 2012-12-15
        • 2014-06-09
        • 1970-01-01
        • 1970-01-01
        • 2021-06-23
        相关资源
        最近更新 更多