7
我剛開始探索JSqlparser。根據我的理解,我修改了TablesNamesFinder來提取列和表,它的工作正常,但一個非常小的問題。JSqlParser - 從列中獲取表名
@Override
public void visit(Column col) {
Column c = col;
String cname = c.getFullyQualifiedName();
Table t = c.getTable();
System.out.println(t.getName());
}
這不會打印表,對於大多數的情況下,打印空和極少數的情況下,打印該表的別名,但不表。有什麼我忘記了嗎?
的訪問所有的源代碼的
@Override
public void visit(SelectExpressionItem exp){
exp.getExpression().accept(this);
}
@Override
public void visit(Table tableName) {
// System.out.println(tableName.getFullyQualifiedName());
}
@Override
public void visit(Select select) {
select.getSelectBody().accept(this);
}
和sum(col1 * col2)這樣的聚合函數,我可以在函數visit中捕獲這些,有沒有更好的方法?我可以有更多關於你給予查詢的部分名稱的信息。喜歡:選擇(col1,col2,col3,)這裏col1,col2,col3是選擇正文。我可以擁有wiki嗎? – Waleed
我不確定,你的意思是?你的意思是上下文嗎?像哪個結構中的哪個列(例如哪個函數)?上下文可以從分析樹中導出。使用像你這樣的訪問者可以。 – wumpz