diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java index 923bd7b3d7..090f988310 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java @@ -4542,12 +4542,24 @@ public class SQLExprParser extends SQLParser { if (lexer.token == Token.LITERAL_ALIAS || lexer.token == Token.IDENTIFIER || lexer.token == Token.LITERAL_CHARS) { - charType.setCollate(lexer.stringVal()); + StringBuilder collate = new StringBuilder(lexer.stringVal()); + lexer.nextToken(); + if (lexer.token == Token.DOT){ + lexer.nextToken(); + if (lexer.token == Token.LITERAL_ALIAS + || lexer.token == Token.IDENTIFIER + || lexer.token == Token.LITERAL_CHARS){ + collate.append(".").append(lexer.stringVal()); + lexer.nextToken(); + + } else { + throw new ParserException(lexer.info()); + } + } + charType.setCollate(collate.toString()); } else { throw new ParserException(lexer.info()); } - - lexer.nextToken(); } return charType;