使用这个工具是因为我做一个工具想根据sql语句取得使用的列名,再根据列名生成vo的field,使用正则是不行的,只能用一个sql解析器来做,但看了几个开源的,如zql,JSqlParser,不是文档做得太烂,就是功能有限,zql对于oracle的函数无法识别,于是就试了一下商业版的General SQL Parser for Java,它也有针对.net版的。下载之日起可试用90天,它可解析出列、列的别名、表名,demo做得也不错,找个demo下来改改就可以达到自己的目的。如这样的sql:
SELECT
NVL(SUM(MISSIONNO), 0) DISTCNT, COUNT(DISTINCT(USERID)) USERIDCNT
FROM EVTSUPPLYHIST
WHERE EVTCODE = #evtCode#
AND EVTNO = #evtNo#
AND GIFTCODE = #giftCode#
AND SUPPLYDT BETWEEN TO_DATE(#startDate#, 'YYYY/MM/DD HH24:MI:SS')
AND TO_DATE(#endDate#, 'YYYY/MM/DD HH24:MI:SS')
注意它还含有ibatis的参数标记#,是否能工作呢?写下面的代码看看能否得到:
TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle);
sqlparser.sqltext = " SELECT\n" +
" NVL(SUM(MISSIONNO), 0) DISTCNT, COUNT(DISTINCT(USERID)) USERIDCNT\n" +
" FROM EVTSUPPLYHIST\n" +
" WHERE EVTCODE = #evtCode#\n" +
" AND EVTNO = #evtNo#\n" +
" AND GIFTCODE = #giftCode#\n" +
" AND SUPPLYDT BETWEEN TO_DATE(#startDate#, 'YYYY/MM/DD HH24:MI:SS') \n" +
" AND TO_DATE(#endDate#, 'YYYY/MM/DD HH24:MI:SS')";
int ret = sqlparser.parse();
if (ret == 0) {
TSelectSqlStatement select = (TSelectSqlStatement) sqlparser.sqlstatements.get(0);
TResultColumnList columnList = select.getResultColumnList();
for (int i = 0; i < columnList.size(); i++) {
TResultColumn col = columnList.getResultColumn(i);
if (col.getAliasClause() != null) { //别名列
System.out.println(col.getAliasClause().toString());
} else { //正常列
System.out.println(col.getExpr().toString());
}
}
} else {
log.error(sqlparser.getErrormessage());
}
运行一下,结果正常地得到了两列,即使含有#这样的标记。官方主页:http://www.sqlparser.com/
分享到:
相关推荐
在"sql-parser-master.zip"这个压缩包中,我们很可能是得到了一个名为"Parser_SQL parser"的项目源码,它是一个SQL解析器的模拟实现。这个解析器可能用于分析、验证和转化SQL查询,以便于执行。 SQL解析器的工作...
JavaParser 是一个强大的开源库,专门用于解析、分析和修改 Java 源代码。这个工具在 Java 开发中尤其有用,因为它允许程序员在运行时或构建过程中动态处理和操作 Java 代码。`javaparser-core-3.6.16.jar` 文件是 ...
Java的SQL解析器JSQLPaser是一个强大的开源库,专门设计用于处理SQL语句的解析工作。这个库允许开发者分析SQL语句的结构,提取出其中的关键元素,如列名、表名、别名以及查询条件,从而在Java应用程序中实现对SQL的...
dt-sql-parser English |dt-sql-parser是使用构建的SQL Parser项目,主要用于BigData域。 生成了基本的Parser,Visitor和Listener,因此很容易完成语法验证, tokenizer ,遍历AST等功能。 此外,它提供了一些辅助...
本项目"java8源码-sqlParser:使用java和antlr4的sql解析器"就是基于Java 8和ANTLR4实现的一个SQL解析器,主要用于理解和转换SQL语句。 首先,ANTLR4的工作原理是通过读取一个语法文件(通常以.g4为扩展名),生成...
项目中已使用的一个比较简单的SQL语句查询字段解析工具类
cd /app/ua-parser-master/java vi pom.xml <version>1.3.0</version> 原来是<version>1.3.1-SNAPSHOT mvn package -DskipTests mvn install:install-file -Dfile="/app/ua-parser-master/java/target/ua-parser-...
这个"javaparser-1.0.8-src.zip"文件是一个包含JavaParser源代码的压缩包,版本为1.0.8。在本文中,我们将深入探讨JavaParser的功能、用途以及如何使用其源代码。 **JavaParser的功能与用途** 1. **语法解析**:...
1. JSqlParser:这是一个用Java编写的完全Java SQL解析器,能够解析SQL92、SQL99和SQL2003标准。开发者可以通过API直接访问解析后的AST,进行自定义处理,如SQL改写、权限控制等。 2. ANTLR:ANTLR是一个强大的解析...
js-sql-parser 在js中解析/字符串化sql(选择语法)。 sql语法遵循新闻自v1.3.0 起修复bug tableFactor别名从v1.2.2开始,增加了对“`”引号别名的支持 BUG修复字符串化的关键字having自V1.2.1。 自v1.2.0起,错字...
java8 源码 sql parser 描述 1.基于 Java8,利用 Antlr4 实现对 sql 的解析并生成解析树 2.基于解析树生成执行计划 3.基于执行计划,对 Java 内存中数据进行操作,对用户透明,并实现部分 sql 执行 4.Java 内存数据...
本项目"sql-parser-master.zip_AKS"涉及到一个特定的SQL解析器实现,可能是用于PHP环境中的,与名为"AKS"的框架相结合。 首先,让我们深入了解SQL解析器。SQL解析器通常由两部分组成:词法分析器和语法分析器。词法...
赠送jar包:scala-parser-combinators_2.11-1.0.4.jar; 赠送原API文档:scala-parser-combinators_2.11-1.0.4-javadoc.jar; 赠送源代码:scala-parser-combinators_2.11-1.0.4-sources.jar; 赠送Maven依赖信息...
JavaParser 是一个强大的开源库,主要用于解析、修改和生成Java源代码。这个工具在软件开发领域,特别是对那些需要处理大量Java源代码的项目中,非常有用。JUG(Java User Group)是全球各地Java爱好者自发组织的...
赠送jar包:scala-parser-combinators_2.12-1.1.0.jar; 赠送原API文档:scala-parser-combinators_2.12-1.1.0-javadoc.jar; 赠送源代码:scala-parser-combinators_2.12-1.1.0-sources.jar; 赠送Maven依赖信息...
"sql-parser-master.zip" 提供的可能是一个SQL解析器的源代码库,通常这样的项目用于解析SQL语句,将其转化为可执行的结构或用于其他数据库相关的应用开发。 在SQL解析器中,以下是一些核心知识点: 1. **语法分析...
《深入理解Java SQL解析器:JSQLParser》 在Java编程领域,处理SQL语句时,我们常常需要对SQL进行解析,以便理解其结构、验证语法或者转换为其他形式。JSQLParser就是一个强大的开源库,专门用于解析和操作SQL语句...
总之,SqlParser C++实现的SQL语法解释器是一个强大的工具,它通过词法分析和语法分析解析SQL语句,为数据库操作提供了基础。理解和掌握SqlParser的工作原理,对于开发和维护与数据库相关的软件系统具有重要意义。
在"antlr-java-parser-1.0.5.zip"这个开源项目中,我们可以推测这是一个基于ANTLR的Java解析器的版本1.0.5。ANTLR通常用于创建语言解析器,这里的"java-parser"部分暗示了它是用来解析Java源代码的。这样的工具对于...
`pull-parser-2.jar`工具类库就是这样一个专门针对XML和JSON解析的利器,它为开发者提供了便捷、高效的解析方式,极大地优化了数据处理的流程。 XML(Extensible Markup Language)和JSON(JavaScript Object ...