alibaba / druid

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

SQLUtils.refactor修改表别名出错 #3555

Open wmj-qy opened 4 years ago

wmj-qy commented 4 years ago

Map<String, String> tableAliasMap =new HashMap<String, String>(); tableAliasMap.put("a", "u"); System.out.println(SQLUtils.refactor("a.username","mysql", tableAliasMap)); 数据库类型mysql、odps报错,oracle成功 报错: com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'a.username', expect IDENTIFIER, actual IDENTIFIER pos 1, line 1, column 2, token IDENTIFIER a at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:287) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:532)

wmj-qy commented 4 years ago

解决方法:修改类SQLStatementParser的parseStatementList方法 public void parseStatementList(List statementList, int max, SQLObject parent) { 添加 case IDENTIFIER: { String strVal = lexer.stringVal();