(improvement)(chat) support nested query sql (#210)

This commit is contained in:
lexluo09
2023-10-13 17:24:10 +08:00
committed by GitHub
parent 5583426115
commit 151963ea79
2 changed files with 16 additions and 1 deletions

View File

@@ -139,8 +139,16 @@ public class SqlParserSelectHelper {
}
public static List<String> getAllFields(String sql) {
List<PlainSelect> plainSelects = getPlainSelects(getPlainSelect(sql));
Set<String> results = new HashSet<>();
for (PlainSelect plainSelect : plainSelects) {
List<String> fields = getFieldsByPlainSelect(plainSelect);
results.addAll(fields);
}
return new ArrayList<>(results);
}
PlainSelect plainSelect = getPlainSelect(sql);
private static ArrayList<String> getFieldsByPlainSelect(PlainSelect plainSelect) {
if (Objects.isNull(plainSelect)) {
return new ArrayList<>();
}

View File

@@ -126,6 +126,13 @@ class SqlParserSelectHelperTest {
+ "= '2023-08-08' ORDER BY pv DESC LIMIT 1");
Assert.assertEquals(allFields.size(), 6);
allFields = SqlParserSelectHelper.getAllFields(
"SELECT * FROM CSpider WHERE (评分 < (SELECT min(评分) FROM CSpider WHERE 语种 = '英文' ))"
+ " AND 数据日期 = '2023-10-12'");
Assert.assertEquals(allFields.size(), 3);
}