开发者社区> 问答> 正文

oracle 分析函数解析报错

1.2.3版本

@Test
public void testSqlPars() {
    // 此sql可以正常执行
    String sql ="SELECT B.CUSTOMER_ID customerId,B.CN_NAME NAME,OPENING_DATE,CLOSING_DATE,count(A.OPENING_DATE) over (partition BY B.CUSTOMER_ID ORDER BY trunc(A.OPENING_DATE,'mm') RANGE BETWEEN interval '3' month (4) preceding AND CURRENT ROW) AS createCount,count(A.CLOSING_DATE) over (partition BY B.CUSTOMER_ID ORDER BY trunc(NVL(A.CLOSING_DATE,SYSDATE),'mm') RANGE BETWEEN interval '3' month (4) preceding AND CURRENT ROW) AS cancelCount,row_number () over (partition BY B.CUSTOMER_ID ORDER BY trunc(A.OPENING_DATE) DESC) AS row_flg FROM account_info A,CUSTOMER_INFO B WHERE A.CUSTOMER_ID=B.CUSTOMER_ID";
    SQLUtils.format(sql, DbType.oracle);
}

报错:

com.alibaba.druid.sql.parser.ParserException: syntax error, expect AND, actual IDENTIFIER pos 210, line 1, column 202, token IDENTIFIER preceding at com.alibaba.druid.sql.parser.SQLExprParser.accept(SQLExprParser.java:3980) at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.parseAggregateExpr(OracleExprParser.java:866) at com.alibaba.druid.sql.parser.SQLExprParser.methodRest(SQLExprParser.java:1554) at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.methodRest(OracleExprParser.java:495) at com.alibaba.druid.sql.parser.SQLExprParser.parseSelectItem(SQLExprParser.java:5432) at com.alibaba.druid.sql.parser.SQLSelectParser.parseSelectList(SQLSelectParser.java:973)

原提问者GitHub用户neozo

展开
收起
山海行 2023-07-05 18:13:10 82 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    看起来是在使用 Oracle 分析函数时出现了错误。这种错误通常是由于分析函数的语法和参数使用问题,或者存在其他语法和语义问题导致的。

    为了解决这个问题,可以考虑以下几个方面:

    检查分析函数的语法。在使用 Oracle 分析函数时,需要确保语法正确,遵循标准的分析函数语法规范和语法要求。可以参考 Oracle 官方文档或者其他相关资料,了解分析函数的语法和用法。

    检查分析函数的参数使用。在使用分析函数时,需要确保正确使用参数,并且参数的类型和值符合要求。可以参考 Oracle 官方文档或者其他相关资料,了解分析函数的参数要求和使用方式。

    检查分析函数的语义。在使用分析函数时,需要确保语义正确,并且符合实际需求。可以使用 SQL 分析工具或者其他工具来分析分析函数的语义和执行计划,以确定是否存在语义错误或者性能问题。

    尝试其他的 SQL 函数。如果分析函数无法满足需求,可以尝试其他的 SQL 函数,例如聚合函数、标量函数、连接函数等。这些函数可以更好地支持各种 SQL 操作和语义。

    2023-07-30 20:00:18
    赞同 展开评论 打赏
  • 问题已修复,请用新版本

    https://github.com/alibaba/druid/releases/tag/1.2.5

    原回答者GitHub用户wenshao

    2023-07-06 10:48:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
Oracle云上最佳实践 立即下载

相关镜像