如何使用 JSQLParser 区分函数调用和字段名称?
例如,查询SELECT COUNT(*) FROM db.table
解析COUNT(*)
为字段名称而不是函数调用。
我需要做什么来更改 SQL 解析以显示COUNT(*)
为函数调用?
谢谢,
最大限度
如何使用 JSQLParser 区分函数调用和字段名称?
例如,查询SELECT COUNT(*) FROM db.table
解析COUNT(*)
为字段名称而不是函数调用。
我需要做什么来更改 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();
}
}