gpt4 book ai didi

java - 使用 JSQLParser 识别 SQL 中的函数调用

转载 作者:行者123 更新时间:2023-11-29 07:16:11 26 4
gpt4 key购买 nike

如何使用 JSQLParser 区分函数调用和字段名称?

例如,查询 SELECT COUNT(*) FROM db.tableCOUNT(*) 解析为字段名称而不是函数调用。

我需要做什么来更改 SQL 解析以将 COUNT(*) 显示为函数调用?

谢谢,

最大

最佳答案

你没有示例代码,所以下面的代码是基于我的猜测,你想证明 count(*) 实际上只是一个函数调用。

import java.io.StringReader;

import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.expression.Function;
import net.sf.jsqlparser.parser.CCJSqlParserManager;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SelectExpressionItem;

public class MySQLParser
{
CCJSqlParserManager parserManager = new CCJSqlParserManager();

public MySQLParser() throws JSQLParserException
{
String statement = "SELECT COUNT(*) FROM db.table1";
PlainSelect plainSelect = (PlainSelect) ((Select) parserManager.parse(new StringReader(statement))).getSelectBody();
System.out.format("%s is function call? %s",
plainSelect.getSelectItems().get(0),
((Function)((SelectExpressionItem) plainSelect.getSelectItems().get(0)).getExpression()).isAllColumns());
}
public static void main(String[] args) throws JSQLParserException
{

new MySQLParser();

}

}

关于java - 使用 JSQLParser 识别 SQL 中的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9421737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com