我正在开发一个以 MySQL 作为后端的基于 Java 的桌面应用程序。在此应用程序中,有一个名为“搜索”的部分,其中有四个字段 - 关键技能(文本字段)、经验(组合框)、城市(组合框)和通知期(组合框)。这四个字段的值都将在运行时提供。关键技能是逗号分隔值。我想要一个使用 LIKE 运算符的 MySQL 查询,借助它我不必每次都在关键技能文本字段中提供逗号分隔值。我只在运行时提供一个值,查询将根据该值使用 LIKE 运算符获取结果。我的查询如下所示
我使用了占位符 '?'因为我的查询是动态类型。是否可以在 LIKE 运算符中使用占位符,还是仅适用于静态类型查询?
String query = "SELECT F_Name, L_Name, Experience, Key_Skills,
FROM Candidate cd
JOIN Candidate2 cd2 ON(cd.Mobile = cd2.C_Mobile)
WHERE Key_Skills LIKE '%?%'";
当我执行上面的查询时,它产生了一个错误说明 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本服务器版本相对应的手册,了解在第 1 行的“FROM Candidate cd JOIN Candidate2 cd2 ON(cd.Mobile = cd2.C_Mobile) WHERE Key_Skills”附近使用的正确语法
最佳答案
您可以使用 concat()
:
String query =
"SELECT F_Name, L_Name, Experience, Key_Skills " +
"FROM Candidate cd JOIN Candidate2 cd2 ON (cd.Mobile = cd2.C_Mobile) " +
"WHERE Key_Skills LIKE concat('%', ?, '%')";
当你通过传递一个参数 say 'someskill'
来执行上面的代码时,函数 concat()
将生成这个字符串 '%someskill%'
和列 Key_Skills
将与这个连接的字符串进行比较。
关于java - 如何在 LIKE 运算符中使用占位符 '?'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55901698/