java - 如何在 JSqlParser 上处理 '[ ] -' 字符

标签 java sql sql-server parsing jsqlparser

我正在使用 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的问题,而是它的演变的问题。 :)

Bracketquotation 默认关闭,以支持各种数组语法,在大多数情况下也使用方括号。此更改是在 JSqlParser 3.0 中引入的。

The array parsing is the default behaviour. Square bracket quotation has to be enabled using a parser flag (CCJSqlParser.withSquareBracketQuotation).

这里是讨论:https://github.com/JSQLParser/JSqlParser/issues/677 .

要再次激活此括号引用,请使用以下内容:

CCJSqlParserUtil.parse("select * from [mytable]", parser -> parser.withSquareBracketQuotation(true));

lambda 表达式用于以某种方式修改所使用的解析器配置。

关于java - 如何在 JSqlParser 上处理 '[ ] -' 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59135053/

相关文章:

php - laravel - 给定可变用户输入生成组合

php - SQL结果来自不同领域的研究

sql - 如何对 SQL 表中的连续时间戳进行分组?

sql - 在 sql 中给出带空格的别名

c# - 找到在某些特定的 asp.net 页面中使用的所有存储过程的简单方法是什么?

java - 从 EJB 返回枚举

java - 通过ArrayLists排序,代码问题

mysql - 将mysql存储过程转换为mssql

java - 许可基于 Java Web 的应用程序

java - 如何在 JTable 中用不同颜色绘制特定列?