Java在准备好的语句中使用“ like”通配符

我正在使用准备好的语句来执行mysql数据库查询。我想实现基于各种关键字的搜索功能。

为此,我需要使用LIKE关键字,这一点我知道很多。而且我之前也使用过预处理语句,但是我不知道如何使用它,LIKE因为从以下代码中,我将在哪里添加'keyword%'

我可以直接在pstmt.setString(1, notes)as (1, notes+"%")或类似的东西中使用它吗?我在网络上看到很多帖子,但在任何地方都没有好的答案。

PreparedStatement pstmt = con.prepareStatement(

"SELECT * FROM analysis WHERE notes like ?");

pstmt.setString(1, notes);

ResultSet rs = pstmt.executeQuery();

回答:

你需要在值本身中而不是在准备好的语句SQL字符串中进行设置。

因此,这应该适合前缀匹配:

notes = notes

.replace("!", "!!")

.replace("%", "!%")

.replace("_", "!_")

.replace("[", "![");

PreparedStatement pstmt = con.prepareStatement(

"SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'");

pstmt.setString(1, notes + "%");

或后缀匹配:

pstmt.setString(1, "%" + notes);

或全球比赛:

pstmt.setString(1, "%" + notes + "%");

以上是 Java在准备好的语句中使用“ like”通配符 的全部内容, 来源链接: utcz.com/qa/435444.html

回到顶部