开发者社区> 问答> 正文

SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1解析后多出as

执行的sql:SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1,在db2数据库下通过druid解析后会多出AS SELECT CURRENT AS TIME FROM SYSIBM.SYSDUMMY1然后传入到数据库底层报错。错误信息如下: Exception in thread "main" com.ibm.db2.jcc.am.vo: DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703, SQLERRMC=CURRENT, DRIVER=4.8.87 at com.ibm.db2.jcc.am.gd.a(gd.java:676) at com.ibm.db2.jcc.am.gd.a(gd.java:60) at com.ibm.db2.jcc.am.gd.a(gd.java:127) at com.ibm.db2.jcc.am.wm.c(wm.java:2510)

原提问者GitHub用户xuanang

展开
收起
山海行 2023-07-05 20:33:16 88 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    您的SQL语句是SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1,在使用Druid解析后,会多出一个AS导致传入底层的SQL语句错误。

    这个问题可能是由于Druid对于SQL语句的解析出现了问题,导致生成的SQL语句不正确。为了解决这个问题,您可以尝试以下几个方法:

    修改SQL语句:您可以尝试修改SQL语句,避免使用AS关键字,例如将SELECT CURRENT TIME修改为SELECT CURRENT_TIME,以避免Druid生成不正确的SQL语句。

    自定义Druid解析规则:Druid是一个开源的Java数据库连接池和SQL解析库,您可以尝试自定义Druid的解析规则,以兼容您的SQL语句。具体来说,您可以通过扩展Druid的SQLParser和SQLSelectParser类来实现自定义解析规则,以适应您的SQL语句。

    使用其他的SQL解析库:如果Druid无法解析您的SQL语句,您可以尝试使用其他的SQL解析库。例如,ANTLR是一个流行的开源的语法解析器生成器,可以用于解析SQL语句。您可以尝试使用ANTLR来解析DB2的SQL语句,以替代Druid。

    2023-07-30 14:07:20
    赞同 展开评论 打赏
  • 问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14

    原回答者GitHub用户wenshao

    2023-07-06 11:52:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像