我想写这个查询:
SELECT * FROM products
WHERE name LIKE '%?%'
OR description LIKE '%?%'
并在spring web应用程序中通过java执行它。但是这里的问题是,当我使用LIKE
运算符时,它必须使用文字,但是当我写'%?%'
时,java并不像参数的占位符那样识别?
,当我添加参数时我得到的错误是我的查询中没有参数。
此外,如果我在没有文字的情况下编写%?%
,我会收到语法错误。
答案 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('%', ?), '%')