【问题标题】:Java Program not locating all keywords while using LIKE SQL statementJava 程序在使用 LIKE SQL 语句时未找到所有关键字
【发布时间】:2021-08-05 21:16:02
【问题描述】:

我正在构建一个应用程序,并尝试使用 PreparedStatements 来执行 SQL 查询。基本上,有一个搜索选项,我正在尝试在搜索框中使用 SQL LIKE 方法。该名称取自搜索框并插入到 PreparedStatement 中。

try {

    PreparedStatement ps2 = con.prepareStatement("SELECT * FROM books WHERE book_name LIKE ? AND status=?");
    ps2.setString(1, name2 + "%");
    ps2.setString(2, stat);
    ResultSet rs = ps2.executeQuery();

    dt.setRowCount(0);
    while (rs.next()) {
        Object ob[] = {
            rs.getString("book_name"),
            rs.getString("book_author")
        };
        dt.addRow(ob);
    }

} catch (Exception af) {
    jLabel29.setText("No result Found !");

}
break;

其中 name2 是用户搜索的内容。但是,当我这样做时,程序仅在“book_name”列中的第一个单词与搜索项目匹配时才给出输出。比如一句“My name is Jack”,如果我输入“Jack”或“name”,则没有输出,但如果输入“My”,则会检测到整行。

【问题讨论】:

  • LIKE 'xyz%' 表示“以xyz 开头”。 % 充当通配符。所以LIKE '%xyz%' 将匹配任何包含xyz

标签: java mysql sql sql-like


【解决方案1】:

应该是LIKE '%<searchString>%' 考虑通配符搜索的所有前面和后面的字符。

换句话说,使用:

ps2.setString(1, "%" + name2 + "%"); 

【讨论】:

  • 我应该在 PreparedStatement 还是 pst.setString 中输入这个?
  • ps2.setString(1, name2 + "%");变为 ps2.setString(1, "%" + name2 + "%");
  • 非常感谢 Ravi 和 Mark 的帮助。坐了很长一段时间后,我终于让它工作了xD
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 2017-06-05
  • 1970-01-01
  • 2020-01-28
相关资源
最近更新 更多