alibaba / druid

阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
https://github.com/alibaba/druid/wiki
Apache License 2.0
27.91k stars 8.57k forks source link

oracle sql 解析出错 #5641

Open hopepanwei opened 9 months ago

hopepanwei commented 9 months ago

select count(*) from table_name where SUBJ_NAME = regexp_replace(q'[资产]','[-]+$')

无法解析函数 regexp_replace(q'[资产]','[-]+$')

com.alibaba.druid.sql.parser.ParserException: syntax error, expect ), actual LITERAL_CHARS pos 101, line 1, column 81, token LITERAL_CHARS [资产]
    at com.alibaba.druid.sql.parser.SQLExprParser.accept(SQLExprParser.java:4628) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.parser.SQLExprParser.methodRest(SQLExprParser.java:1943) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.methodRest(OracleExprParser.java:524) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.parser.SQLExprParser.primaryRest(SQLExprParser.java:1639) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.primaryRest(OracleExprParser.java:709) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:1346) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.primary(OracleExprParser.java:486) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.parser.SQLExprParser.bitXor(SQLExprParser.java:152) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.parser.SQLExprParser.multiplicative(SQLExprParser.java:247) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.parser.SQLExprParser.additive(SQLExprParser.java:3264) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.parser.SQLExprParser.shift(SQLExprParser.java:3310) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.parser.SQLExprParser.bitAnd(SQLExprParser.java:3036) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.parser.SQLExprParser.bitOr(SQLExprParser.java:3055) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.parser.SQLSelectParser.parseWhere(SQLSelectParser.java:680) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:290) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.parser.SQLSelectParser.query(SQLSelectParser.java:400) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.select(OracleSelectParser.java:50) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser.parseStatementList(OracleStatementParser.java:96) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:102) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.visitor.ParameterizedOutputVisitorUtils.parameterize(ParameterizedOutputVisitorUtils.java:164) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.sql.visitor.ParameterizedOutputVisitorUtils.parameterize(ParameterizedOutputVisitorUtils.java:135) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.filter.stat.StatFilter.mergeSql(StatFilter.java:148) ~[druid-1.2.20.jar:?]

druid版本 : 测试过1.2.20 、1.2.16均有上述问题

lizongbo commented 9 months ago

中括号的解析还没有支持,后面看下这个好不好加。