作者:-依小冷_217 | 来源:互联网 | 2023-02-01 14:09
我有一个用例,我想知道在SQL
SELECT name, age*5 as intelligence FROM bla WHERE bla=bla
字符串中选择的列,例如,如果SQL是这样的:那么在解析上面的String之后,我只希望输出是:name, intelligence
。
首先,是否可以通过方解石?
也欢迎任何其他选择。
PS:在实际在数据库上运行查询之前,我想知道这一点。
1> Michael Mior..:
方解石绝对可以做到这一点。您首先要创建一个实例SqlParser
并解析查询:
SqlParser parser = SqlParser.create(query)
SqlNode parsed = parser.parseQuery()
从那里,您可能会最成功地实现该SqlVisitor
接口。您首先要找到一个SqlSelect
实例,然后通过对的每个元素调用visit来访问被选择的每个表达式getSelectList
。
从那里开始,如何进行将取决于您要支持的表达式的复杂性。但是,递归访问所有SqlCall
节点及其操作数,然后收集SqlIdentifier
您看到的任何值,可能就足够了。
对于这种情况,您应该能够使用SqlParser的parseExpression方法。