【问题标题】:How to use LIKE in a dynamic sql search?如何在动态 sql 搜索中使用 LIKE?
【发布时间】:2015-04-30 06:08:39
【问题描述】:

我正在尝试进行不区分大小写的动态搜索,但结果是参数索引超出范围(1 > 参数数量,即 0)

     java.sql.PreparedStatement preStatement = connect.prepareStatement
                            "SELECT word1 from words WHERE word2 like '%?%'");
     preStatement.setString(1, word);
     ResultSet rs = preStatement.executeQuery();

【问题讨论】:

    标签: java mysql sql mysql-workbench


    【解决方案1】:
    java.sql.PreparedStatement preStatement = connect.prepareStatement
                                "SELECT word1 from words WHERE word2 COLLATE UTF8_GENERAL_CI like '?'");
    preStatement.setString(1, "%"+word+"%");
    ResultSet rs = preStatement.executeQuery();
    

    当您当时调用setString() api 时使用表达式。

    对于不区分大小写的搜索,您必须在喜欢之前添加COLLATE UTF8_GENERAL_CI

    【讨论】:

    • 去掉单引号。
    • 它删除了错误,但它返回 null。仍然无法进行不区分大小写的搜索
    • @Untitled 我已经更新了不区分大小写搜索的答案
    • @atishshimpi 导致错误; com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: COLLATION 'UTF8_GENERAL_CI' 对 CHARACTER SET 'latin1' 无效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    相关资源
    最近更新 更多