开发者社区> 问答> 正文

执行正确,却报com.alibaba.druid.sql.parser.ParserExceptio

我用的mysql,orm用mybatis,然后发现 select * from xx WHERE ( t6.company_name LIKE "%"?"%" or t6.company_name LIKE "%"?"%" ) 执行类似这种语句,就报这个错误。。之前也是执行一个语句,然后报这个错误 ,也是类似有多个"%"?"%" 就报错。代码是正确运行的。

原提问者GitHub用户cyuanxin

展开
收起
山海行 2023-07-05 21:34:56 1128 0
4 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    使用阿里云的Druid SQL Parser解析SQL语句时,有时会出现执行正确但是报ParserException异常的情况。这通常是因为SQL语句中包含了Druid SQL Parser不支持的语法或者格式。

    为了解决这个问题,可以尝试以下几种方法:

    检查SQL语句的格式和语法,确保符合标准的SQL语法,并不包含Druid SQL Parser不支持的语法或者格式,例如拼写错误、语法错误等。

    升级Druid SQL Parser的版本,以确保支持更多的SQL语法和格式。

    使用其他的SQL解析器,例如JSqlParser、ANTLR等。

    如果SQL语句执行正确,可以忽略ParserException异常,或者使用try-catch块来捕获这个异常,以避免程序的崩溃。

    2023-07-30 09:39:48
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    根据您提供的信息,您的代码在执行类似 select * from xx WHERE (t6.company_name LIKE "%"?"%" or t6.company_name LIKE "%"?"%") 的语句时报错 com.alibaba.druid.sql.parser.ParserException

    这个错误通常是由于SQL语法错误引起的。在SQL语句中,LIKE操作符后的模式匹配通常使用通配符 %。但是在您的SQL语句中,您使用了占位符 ? 来表示参数值,然后在LIKE操作符后添加了额外的 %

    通常情况下,占位符 ? 应该用来替换具体的参数值,而不是用来替换通配符 %。如果您想在LIKE操作中使用通配符 %,您应该在参数值中添加 %,而不是在SQL语句中使用额外的 %

    您可以尝试修改您的SQL语句如下:

    SELECT * FROM xx WHERE t6.company_name LIKE CONCAT('%', ?, '%') OR t6.company_name LIKE CONCAT('%', ?, '%')
    

    在这个修改后的SQL语句中,我们使用 CONCAT 函数来将 % 和参数值连接起来,以生成正确的模式匹配。

    如果您在使用MyBatis时仍然遇到问题,请检查您的Mapper文件中是否正确定义了参数,并且您在Java代码中传递了正确的参数。

    希望这个解决方案能够帮助您解决问题。如果您仍然遇到困难,请提供更多的上下文信息,以便更好地帮助您解决问题。

    2023-07-11 17:13:23
    赞同 展开评论 打赏
  • ,如果你使用了LIKE操作符来过滤数据,可能会遇到类似于"select * from xx WHERE ( t6.company_name LIKE "%"?"%" or t6.company_name LIKE "%"?"%)"这样的语句无法执行的问题。这是因为MyBatis在解析SQL语句时,可能会将多个"%"?"%"视为一个参数,从而导致SQL语句无法执行。

    2023-07-11 10:36:43
    赞同 展开评论 打赏
  • 刚测试过了,mysql也不支持这样的语法

    select * from t1 where f1 LIKE "%"?"%";

    运行报错 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

    mysql的语法解析有时候不能正确发现语法错误,你这个明显是语法错误的,建议修改SQL

    原回答者GitHub用户wenshao

    2023-07-06 12:17:24
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载