在java中使用带有like运算符和参数的select查询

时间:2017-06-05 16:55:04

标签: java mysql sql

我想写这个查询:

SELECT * FROM products
WHERE name LIKE '%?%' 
OR description LIKE '%?%'

并在spring web应用程序中通过java执行它。但是这里的问题是,当我使用LIKE运算符时,它必须使用文字,但是当我写'%?%'时,java并不像参数的占位符那样识别?,当我添加参数时我得到的错误是我的查询中没有参数。

此外,如果我在没有文字的情况下编写%?%,我会收到语法错误。

2 个答案:

答案 0 :(得分:6)

您始终可以使用concat()

SELECT *
FROM products
WHERE name LIKE CONCAT('%', ?, '%') OR
      description LIKE CONCAT('%', ?, '%');

或者使用应用程序将通配符放在模式字符串中。

答案 1 :(得分:0)

这个问题很旧,但是以防万一将来有人需要。

CONCAT()等待两个参数,此代码接收三个参数:

 WHERE  name LIKE CONCAT('%', ?, '%') OR
      description LIKE CONCAT('%', ?, '%');

该代码将引发无效参数错误,您应该尝试此操作。

WHERE name LIKE CONCAT(CONCAT('%', ?), '%') OR
  description LIKE CONCAT(CONCAT('%', ?), '%')