1
如何使用JSQLParser區分函數調用和字段名稱?使用JSQLParser識別SQL中的函數調用
例如,查詢SELECT COUNT(*) FROM db.table
將COUNT(*)
解析爲字段名稱而不是函數調用。
我需要做些什麼來改變SQL解析以顯示COUNT(*)
作爲函數調用?
感謝,
最大
如何使用JSQLParser區分函數調用和字段名稱?使用JSQLParser識別SQL中的函數調用
例如,查詢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();
}
}
延遲答案:使用最新版本(0.9.4),功能被正確識別。 – Markus 2016-05-24 15:29:30