我正在使用JSqlParser 3.0,而我的查询是SELECT * from [dev-testdb].dbo.EMPLOYEES
。我正在尝试删除[]字符,因为这些字符不支持JSqlParser 3.0版本。我想1.x可以,但是我必须使用3.0。
除去括号后,我的查询看起来像SELECT * from dev-testdb.dbo.EMPLOYEES
。
我正在调试我的项目,并在此命令上final Statement statement = CCJSqlParserUtil.parse(sql);
我抓住了这个例外
net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "-" "-"
at line 1, column 18.
使用JSqlParser解析时如何解决这3个字符?
最佳答案
这不是JSqlParser的问题,而是它的发展。 :)
默认情况下,括号引用已关闭,以支持所有类型的数组语法,在大多数情况下,该语法也使用方括号。此更改是JSqlParser 3.0引入的。
数组解析是默认行为。必须启用方括号报价
使用解析器标志(CCJSqlParser.withSquareBracketQuotation)。
这里是讨论:https://github.com/JSQLParser/JSqlParser/issues/677。
要再次激活该括号报价,请使用类似以下内容:
CCJSqlParserUtil.parse("select * from [mytable]", parser -> parser.withSquareBracketQuotation(true));
lambda表达式用于以某种方式修改使用的解析器配置。