【问题标题】:Single quotes in LIKE into JDBC prepared statementLIKE 中的单引号到 JDBC 准备语句中
【发布时间】:2014-07-12 03:05:24
【问题描述】:

我正在使用关键字对数据库行进行搜索。 我必须使用 JDBC 准备语句来执行这个查询。

SELECT id, name, ci FROM clients WHERE LOWER(name) LIKE '%keyword%'

我尝试的是:

ps = getConnection().prepareStatement("SELECT id, 
                                              name, 
                                              ci 
                                       FROM clientes 
                                       WHERE LOWER(name) LIKE '%?%'");

如果我写这个,系统会找到具有 ?开始或结束的符号。 显然,下面的语句失败了,说查询没有要传递的参数。

ps.setString(1, keyword);

同理:

SELECT id, nombre, ci FROM clientes WHERE LOWER(nombre) LIKE %?%

非常感谢任何帮助

【问题讨论】:

    标签: java mysql sql jdbc spring-jdbc


    【解决方案1】:

    尝试使用如下形式的 SQL 文本:

    ... LIKE CONCAT('%', ? , '%')
    

    【讨论】:

    • 我会将此作为正确答案,因为这是我遵循的方法。它比包围关键字更快、效果更好、更简单。
    【解决方案2】:

    你准备好的陈述应该是

    SELECT id, name, ci FROM clients WHERE LOWER(name) LIKE ?
    

    那么你可以将参数设置为%keyword%

    【讨论】:

      猜你喜欢
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      相关资源
      最近更新 更多