JSqlParser

JSqlParser 是一个 SQL 语句解析器。

它在 Java 类的可遍历层次结构中转换 SQL。

JSqlParser 不限于一个数据库,而是提供了对很多特殊的 Oracle、SqlServer、MySQL、PostgreSQL 的支持……举个例子,它支持 Oracles join 语法 using (+)、PostgreSQLs cast 语法 using ::、relational != 等运算符。

这个怎么运作?

解析器是使用 JavaCC 构建的。

SQL 的核心 JavaCC 语法取自 Guido Draheim 的站点,并已更改以生成 Java 类的层次结构。 称为解析器的类用于再次构建类层次结构的 SQL 文本。

随着时间的推移,语法得到了扩展,现在是各种数据库系统语法专业的组合。

它是因需要而生长的。

因此可以解析某些(不是全部)Oracle、MySql、SQLServer、PostgreSQL 特定方面。

入门

maven

<dependency>
	<groupId>com.github.jsqlparser</groupId>
	<artifactId>jsqlparser</artifactId>
	<version>3.2</version>
</dependency>

转换

https://github.com/JSQLParser/JSqlParser/wiki/Examples-of-SQL-parsing

简单转换:

Statement stmt = CCJSqlParserUtil.parse("SELECT * FROM tab1");

SQL 脚本转换:

Statements stmt = CCJSqlParserUtil.parseStatements("SELECT * FROM tab1; SELECT * FROM tab2");

简单表达式转换:

Expression expr = CCJSqlParserUtil.parseExpression("a*(5+mycolumn)");

小结

https://github.com/JSQLParser/JSqlParser