首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Calcite用于查找SQL字符串中的选定列

Apache Calcite用于查找SQL字符串中的选定列
EN

Stack Overflow用户
提问于 2017-06-13 04:31:58
回答 2查看 3.5K关注 0票数 2

我有一个用例,我想知道在SQL string.For实例中选择了哪些列,如果SQL是这样的:

SELECT name, age*5 as intelligence FROM bla WHERE bla=bla

然后,在解析了上面的字符串之后,我只希望输出为:name, intelligence

首先,方解石有可能实现吗?

任何其他选项也是受欢迎的。

PS:在实际运行数据库查询之前,我想知道这一点。

EN

回答 2

Stack Overflow用户

发布于 2017-06-13 23:58:02

用方解石可以做到这一点。首先,您需要创建一个SqlParser实例并解析查询:

代码语言:javascript
复制
SqlParser parser = SqlParser.create(query)
SqlNode parsed = parser.parseQuery()

在此基础上,您可能获得了最成功的SqlVisitor接口实现。您需要首先找到一个SqlSelect实例,然后通过在getSelectList的每个元素上调用a来访问所选的每个表达式。

从那时起,您如何继续将取决于您想要支持的表达式的复杂性。但是,递归访问所有SqlCall节点及其操作数,然后收集您看到的任何SqlIdentifier值可能就足够了。

票数 7
EN

Stack Overflow用户

发布于 2018-12-16 16:26:29

它可以像下面这样简单:

代码语言:javascript
复制
SqlParser parser = SqlParser.create(yourQuery);
SqlSelect selectNode = (SqlSelect) parser.parseQuery();
SqlNodeList list = selectNode.getList();

for (int i = 0; i < list.size(); i++) {
    System.out.println("Column " + (i + 1) + ": " + list.get(i).toString());
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44508240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档