java - 如何在 LIKE 运算符中使用占位符 '?'?

标签 java mysql

我正在开发一个以 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/

相关文章:

mysql - 为什么前缀索引比 mysql 中的索引慢?

java - 用于在 Java 中执行 xqj 的 XML 处理器

java - Selenium 3 InternetExplorer 驱动程序设置

php - 插入mysql表的问题

php - Stack Overflow 标签系统,如何操作

php - 使用 foreach 循环添加日期时间间隔

32 位和 64 位的 Java 类路径

java - 如何使用接口(interface)在 Activity 和 sqlite 数据库助手类之间进行通信

java - Google App Engine 上的 Spring Security openid

php - 将 Joomla 1.5 网站移动到新的(现代)托管... MySQL DB 不向后兼容吗?