select truncate(AVG(mark),2) from tabName where spu = ? and is_delete=0 and is_check = '2'
SQLExprParser 的primary()方法中 没有truncate的定义
原提问者GitHub用户boboChina
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您提供的信息比较简单,无法确定具体报错信息,但可能存在以下几种可能的原因:
SQL语法错误:首先需要验证SQL语句本身是否正确,是否符合MySQL 5.6的语法规范。可以尝试直接在MySQL 5.6中执行该SQL语句,以验证SQL语句是否正确。
Druid版本问题:Druid SQL Parser是一个开源的SQL解析库,用于解析SQL语句,并生成AST。不同版本的Druid SQL Parser可能存在差异,可能会导致解析结果不同。因此,可能需要检查使用的Druid版本是否正确,并尝试使用其他版本的Druid SQL Parser进行解析。
解析器配置问题:Druid SQL Parser提供了一些配置参数,用于控制SQL解析的行为,例如是否启用ANSI模式、是否将所有字段解析为小写等。在解析SQL语句之前,需要根据实际情况对解析器进行配置,以保证解析结果正确。
针对这个问题,可以尝试如下解决方案:
验证SQL语句的正确性:首先需要验证SQL语句本身是否正确,是否符合MySQL 5.6的语法规范。可以尝试直接在MySQL 5.6中执行该SQL语句,以验证SQL语句是否正确。
检查Druid版本:检查使用的Druid版本是否正确,并尝试使用其他版本的Druid SQL Parser进行解析。
检查解析器配置:检查Druid SQL Parser的配置是否正确,并尝试调整配置参数,以保证解析结果正确。
问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14
原回答者GitHub用户wenshao
根据您提供的SQL语句以及错误信息,可以看出Druid解析器在解析truncate
函数时抛出了异常。具体错误信息为com.alibaba.druid.sql.parser.ParserException: error LPAREN
。
根据Druid的文档,当前版本的Druid(1.7)对于MySQL数据库的truncate
函数的支持是有限的,并且不支持所有可能的语法和功能。因此,您遇到的问题可能是由于Druid解析器尚未实现或者存在一些限制导致的。
建议您检查您的SQL语句的语法,确保其符合MySQL数据库的语法规范。如果语法正确,那么您可能需要考虑使用其他方法来解析和执行该SQL语句,例如使用MySQL自带的JDBC驱动程序来执行。
另外,根据您的SQL语句select truncate(AVG(mark),2) from tabName where spu = ? and is_delete=0 and is_check = '2'
,我注意到您可能想要使用MySQL的TRUNCATE
函数来对AVG(mark)
结果进行截取小数位数。但是请注意,MySQL的TRUNCATE
函数是用于截取小数位数的,而不是用于清空表的。如果您想要清空表,请使用TRUNCATE TABLE
语句。