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 准备语句中的主要内容,如果未能解决你的问题,请参考以下文章