Я только начал изучать 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), я могу поймать их во время посещения функций, есть ли лучший способ? Могу ли я получить дополнительную информацию о том, какие имена частей, которые вы предоставили для запроса. Например: Выбрать (col1, col2, col3,) здесь col1, col2, col3 - выбрать тело. Могу ли я получить wiki? – Waleed
Я не уверен, что вы имеете в виду? Вы имеете в виду контекст? Как в столбце, внутри которого строится (например, какая функция)? Контекст выводится из дерева разбора. Использование посетителя, как и вы, это нормально. – wumpz