(improvement)(chat) Modify getFilterExpression to support the datediff function. (#576)

This commit is contained in:
lexluo09
2023-12-27 21:20:05 +08:00
committed by GitHub
parent 6c8ebdfe1a
commit f788249b1a
3 changed files with 15 additions and 1 deletions

View File

@@ -144,7 +144,10 @@ public class FieldAndValueAcquireVisitor extends ExpressionVisitorAdapter {
private Column getColumn(Function leftExpressionFunction) {
List<Expression> leftExpressions = leftExpressionFunction.getParameters().getExpressions();
if (CollectionUtils.isEmpty(leftExpressions) || leftExpressions.size() < 1) {
if (CollectionUtils.isEmpty(leftExpressions)) {
return null;
}
if (!(leftExpressions.get(0) instanceof Column)) {
return null;
}
return (Column) leftExpressions.get(0);

View File

@@ -34,6 +34,7 @@ import net.sf.jsqlparser.statement.select.SelectItem;
import net.sf.jsqlparser.statement.select.SelectVisitorAdapter;
import net.sf.jsqlparser.statement.select.SubSelect;
import net.sf.jsqlparser.statement.select.SetOperationList;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.springframework.util.CollectionUtils;
@@ -59,6 +60,9 @@ public class SqlParserSelectHelper {
having.accept(new FieldAndValueAcquireVisitor(result));
}
}
result = result.stream()
.filter(fieldExpression -> StringUtils.isNotBlank(fieldExpression.getFieldName()))
.collect(Collectors.toSet());
return new ArrayList<>(result);
}

View File

@@ -118,6 +118,13 @@ class SqlParserSelectHelperTest {
+ "WHERE MONTH(数据日期) = 9) FROM 营销月模型 WHERE 国家中文名 = '肯尼亚' AND MONTH(数据日期) = 9");
System.out.println(fieldExpression);
fieldExpression = SqlParserSelectHelper.getFilterExpression(
"select 等级, count(*) from 歌手 where 别名 = '港台' or 活跃区域 = '港台' and"
+ " datediff('day', 数据日期, '2023-12-24') <= 0 group by 等级");
System.out.println(fieldExpression);
}
@Test