【问题标题】:SQL fuzzy searchSQL模糊搜索
【发布时间】:2014-08-20 16:59:53
【问题描述】:

我必须在我的 Java 程序中调用 SQL 数据库搜索。

检索条件是用户输入的字符串部分匹配 NAME 字段并且不区分大小写。例如,如果用户输入“joe”,则应返回名称为“Joea”、“Bjoe”、“JOEED”的学生记录。

虽然我尝试编写如下代码。它似乎无法解决。

谁能告诉我为什么?谢谢。

String fuzzySearch = "UPPER(%" + inputStr + "%)";
String query = "SELECT * FROM student WHERE UPPER(student.name) LIKE ? ";
PreparedStatement prepStatement = con.prepareStatement(query.toString());
prepStatement.setObject(1,fuzzySearch);

【问题讨论】:

  • 这到底是怎么回事“它似乎无法解决。”意思是?它抛出一个错误?如果是这样,错误是什么?它没有返回预期的结果?如果不是,它返回的是什么
  • gordonlesti.com/fuzzy-fulltext-search-with-mysql 虽然是php,你也可以很容易的把它翻译成java。重要的部分是它使用了 mysql,这在你的情况下似乎很重要。

标签: java sql fuzzy-search


【解决方案1】:

当您使用字符串绑定变量时,您是在说

WHERE UPPER(student.name) LIKE 'UPPER(%joe%)'

而不是

WHERE UPPER(student.name) LIKE UPPER('%joe%')

所以用

String fuzzySearch = "%" + inputStr + "%";
String query = "SELECT * FROM student WHERE UPPER(student.name) LIKE UPPER(?) ";
PreparedStatement prepStatement = con.prepareStatement(query.toString());
prepStatement.setObject(1,fuzzySearch);

改为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 2020-03-15
    • 2011-10-28
    • 2016-06-12
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多