LIKE 中的单引号到 JDBC 准备语句中

Posted

技术标签:

【中文标题】LIKE 中的单引号到 JDBC 准备语句中【英文标题】:Single quotes in LIKE into JDBC prepared statement 【发布时间】: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 %?%

非常感谢任何帮助

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

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

你准备好的陈述应该是

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

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

【讨论】:

以上是关于LIKE 中的单引号到 JDBC 准备语句中的主要内容,如果未能解决你的问题,请参考以下文章

asp中sql语句中啥时候加单引号,啥时候加双引号

SQL 中单引号 和一些特殊字符的处理

shell脚本中单双引号疑惑

shell中单引号双引号反斜杠简说

php操作MySQL中单引号与怎么处理?

python中单引号双引号和三引号的区别