我正在使用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表达式用于以某种方式修改使用的解析器配置。

10-08 07:05