LIKE中的单引号转换为JDBC预处理语句

时间:2014-07-12 03:05:25

标签: java mysql sql jdbc spring-jdbc

我在数据库行上使用关键字实现搜索。 我必须使用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 %?%

非常感谢任何帮助

2 个答案:

答案 0 :(得分:4)

尝试使用以下格式的SQL文本:

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

答案 1 :(得分:0)

您准备好的陈述应该是

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

然后您可以将参数设置为%keyword%