无法在java中执行“like”查询

Posted

技术标签:

【中文标题】无法在java中执行“like”查询【英文标题】:unable to execute "like" query in java 【发布时间】:2015-07-10 05:01:42 【问题描述】:

mysql 数据库中,我有一个表名搜索。 当我编写此查询时,它成功执行。

"select * from 'search' where path like %overview%"

但是当我用java写的时候:

String query="SELECT path FROM `search` WHERE path like %?% ";
java.sql.PreparedStatement st=con.prepareStatement(query);
st.setString(1,textField.getText() );
ResultSet rs=st.executeQuery();

它不起作用并显示错误:

com.mysql.jdbc.exception.jdbc4.MySQLSystaxErrorException: you have an error in sql syntax; check the manual that corresponds to your Mysql server version for the right Syntax to use near '%'overview'%' at line 1

【问题讨论】:

什么错误?为什么要重音而不是单引号? 我没有 10 名声望,所以我无法添加图片,所以我需要写下那个错误: 您通常将堆栈跟踪添加为文本,而不是图片。 ***.com/questions/8247970/… 这个链接很有用 错误是:com.mysql.jdbc.exception.jdbc4.MySQLSystaxErrorException: you have an error in sql syntax;检查与您的 Mysql 服务器版本相对应的手册,以在第 1 行的 '%'overview'%' 附近使用正确的语法。 【参考方案1】:
String query="SELECT path FROM `search` WHERE path like ? ";
java.sql.PreparedStatement st=con.prepareStatement(query);
st.setString(1,"%"+ textField.getText() + "%" );
ResultSet rs=st.executeQuery();

你可以试试上面的代码

【讨论】:

【参考方案2】:

百分号是文字,如果你想将它们包含在 SQL 文本中,并让 MySQL 将它们添加到你传入的值中,你可以这样做:

String query="SELECT path FROM `search` WHERE path LIKE CONCAT('%',?,'%')";

另一种方法是从 SQL 文本语句中删除百分号

String query="SELECT path FROM `search` WHERE path LIKE ?";

然后在您提供的值中添加/附加百分比字符。

【讨论】:

以上是关于无法在java中执行“like”查询的主要内容,如果未能解决你的问题,请参考以下文章

无法在本机查询 Spring Boot 中使用“LIKE”

PHP PostgreSQL PDO 无法使用 LIKE 绑定参数

使用多个 LIKE 条件时,搜索查询无法按预期工作

LIKE 运算符无法正常使用日期

Drupal 寻呼机不适用于查询中的“LIKE”

为啥我可以将 java 应用程序连接到 MySQL DB 但无法执行查询? [复制]