Java写模糊查询Object数组params如果拼参数

「已注销」 2019-04-10 10:47:18
大家好 本人目前在学Java 写Java连接数据库的时候遇到了一个模糊查询百分号不知道如果拼接 麻烦老手看一下
...全文
1460 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
DAVE-BLACK 2019-06-11
  • 打赏
  • 举报
回复
拼到?的入参不要写在sql里
*杰 2019-06-11
  • 打赏
  • 举报
回复
拼接查询OK
qq_39936465 2019-04-19
  • 打赏
  • 举报
回复
引用 15 楼 weixin_42309511 的回复:
报错 这个错我在百度差不多非常接近一直不理解是什么意思 金山词霸个个翻译也不太明白 我用的内置MyEclipseTomact访问页面 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1


意思就是:你有一个sql的语法错误,请你人工检查sql第一行“)”附近,并使用和你mysql 版本相符合的正确语法。

你可以试着在屏幕上输出你的sql 语句,然后把输出来的sql语句直接在mysql 上执行,看看问题出在哪里。
  • 打赏
  • 举报
回复
like concat('%',?,'%')
cheng297 2019-04-15
  • 打赏
  • 举报
回复
引用 15 楼 weixin_42309511 的回复:
报错 这个错我在百度差不多非常接近一直不理解是什么意思 金山词霸个个翻译也不太明白 我用的内置MyEclipseTomact访问页面 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
这是SQL错误,你在调用的时候,打印SQL语句,还有传进去的参数。我看到你发的一个错误好像是传了个空参数进去
「已注销」 2019-04-12
  • 打赏
  • 举报
回复
第三种concat sql String sql = "select studentNo,studentName,gradeId," + "address,identityCard from student " + "where studentName concat('%',concat(?,'%')))"; Object[] params = {studentName}; 报错原因 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'concat('%',concat(null,'%')))' at line 1
「已注销」 2019-04-12
  • 打赏
  • 举报
回复
你好 我分别试了你的方法 一二报同样错误 这是sql String sql = "select studentNo,studentName,gradeId," + "address,identityCard from student " + "where studentName like ?)"; Object[] params = {studentName="%"+studentName+"%"}; 报错原因com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
「已注销」 2019-04-12
  • 打赏
  • 举报
回复
谢谢各位 真的谢谢 最近有点忙 忘记看帖 谢谢大家
「已注销」 2019-04-12
  • 打赏
  • 举报
回复
报错 这个错我在百度差不多非常接近一直不理解是什么意思 金山词霸个个翻译也不太明白 我用的内置MyEclipseTomact访问页面 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
「已注销」 2019-04-12
  • 打赏
  • 举报
回复
引用 13 楼 cheng297的回复:
[quote=引用 10 楼 weixin_42309511 的回复:] 你好 我分别试了你的方法 一二报同样错误 这是sql String sql = "select studentNo,studentName,gradeId," + "address,identityCard from student " + "where studentName like ?)"; Object[] params = {studentName="%"+studentName+"%"}; 报错原因com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
Object[] params = {studentName="%"+studentName+"%"};
这语句最好不要这样写,你最好写成
Object[] params = {"%"+studentName+"%"};
或者

studentName="%"+studentName+"%";
Object[] params = {studentName};
[/quote] 好嘞 我试试 麻烦你了
cheng297 2019-04-12
  • 打赏
  • 举报
回复
引用 10 楼 weixin_42309511 的回复:
你好 我分别试了你的方法 一二报同样错误 这是sql String sql = "select studentNo,studentName,gradeId," + "address,identityCard from student " + "where studentName like ?)"; Object[] params = {studentName="%"+studentName+"%"}; 报错原因com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
Object[] params = {studentName="%"+studentName+"%"};
这语句最好不要这样写,你最好写成
Object[] params = {"%"+studentName+"%"};
或者

studentName="%"+studentName+"%";
Object[] params = {studentName};
cheng297 2019-04-12
  • 打赏
  • 举报
回复
引用 11 楼 weixin_42309511 的回复:
第三种concat sql String sql = "select studentNo,studentName,gradeId," + "address,identityCard from student " + "where studentName concat('%',concat(?,'%')))"; Object[] params = {studentName}; 报错原因 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'concat('%',concat(null,'%')))' at line 1
你传了空值进去,所以报错了啊
cheng297 2019-04-10
  • 打赏
  • 举报
回复
引用 4 楼 qps2009 的回复:
[quote=引用 3 楼 cheng297 的回复:] [quote=引用 2 楼 qps2009 的回复:]
like concat('%',?,'%')
这样拼也不行吗?
不可以concat只是拼接两个字符串的,想拼接两个以上的字符串就需要concat嵌套或者使用 || 来拼接[/quote] 为什么我在mybaits里面用concat可以拼接三个字符串?
 LIKE CONCAT('%',#{keyWords},'%')
这样就没问题。[/quote] 不好意思,在oracle里面的concat是无法直接拼接两个以上的字符串的,mysql里是可以的。 你这个报错是因为注入的SQL没有占位符报错。打印下SQL语句就能找到问题了。
qps2009 2019-04-10
  • 打赏
  • 举报
回复
引用 3 楼 cheng297 的回复:
[quote=引用 2 楼 qps2009 的回复:]
like concat('%',?,'%')
这样拼也不行吗?
不可以concat只是拼接两个字符串的,想拼接两个以上的字符串就需要concat嵌套或者使用 || 来拼接[/quote] 为什么我在mybaits里面用concat可以拼接三个字符串?
 LIKE CONCAT('%',#{keyWords},'%')
这样就没问题。
cheng297 2019-04-10
  • 打赏
  • 举报
回复
引用 2 楼 qps2009 的回复:
like concat('%',?,'%')
这样拼也不行吗?
不可以concat只是拼接两个字符串的,想拼接两个以上的字符串就需要concat嵌套或者使用 || 来拼接
qps2009 2019-04-10
  • 打赏
  • 举报
回复
like concat('%',?,'%')
这样拼也不行吗?
cheng297 2019-04-10
  • 打赏
  • 举报
回复
这个你可以在SQL里面直接写:like ?,然后在传参数的时候对参数处理一下,例如:studentName = "%" + studentName + "%"。 还有一种是直接在SQL里面处理的,like '%' || ? || '%';也可以使用concat,但concat只能拼接两个字符串,像你那样直接使用concat拼接三个字符串的是不行的,使用concat正确的写法是 concat('%', concat(?, '%'))。
nayi_224 2019-04-10
  • 打赏
  • 举报
回复
也可以换用instr,效率上有可能高些
instr(studentName, ?) > 0
十八道胡同 2019-04-10
  • 打赏
  • 举报
回复
你把你凭借后的sql语句 输出来,就知道为啥报错了
qps2009 2019-04-10
  • 打赏
  • 举报
回复
引用 5 楼 cheng297 的回复:
[quote=引用 4 楼 qps2009 的回复:] [quote=引用 3 楼 cheng297 的回复:] [quote=引用 2 楼 qps2009 的回复:]
like concat('%',?,'%')
这样拼也不行吗?
不可以concat只是拼接两个字符串的,想拼接两个以上的字符串就需要concat嵌套或者使用 || 来拼接[/quote] 为什么我在mybaits里面用concat可以拼接三个字符串?
 LIKE CONCAT('%',#{keyWords},'%')
这样就没问题。[/quote] 不好意思,在oracle里面的concat是无法直接拼接两个以上的字符串的,mysql里是可以的。 你这个报错是因为注入的SQL没有占位符报错。打印下SQL语句就能找到问题了。[/quote] 原来是这样,受教了,谢谢

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧