88import net .sf .jsqlparser .expression .Parenthesis ;
99import net .sf .jsqlparser .expression .operators .conditional .AndExpression ;
1010import net .sf .jsqlparser .expression .operators .conditional .OrExpression ;
11- import net .sf .jsqlparser .expression .operators .relational .ComparisonOperator ;
12- import net .sf .jsqlparser .expression .operators .relational .EqualsTo ;
13- import net .sf .jsqlparser .expression .operators .relational .ExpressionList ;
14- import net .sf .jsqlparser .expression .operators .relational .GreaterThan ;
15- import net .sf .jsqlparser .expression .operators .relational .GreaterThanEquals ;
16- import net .sf .jsqlparser .expression .operators .relational .InExpression ;
17- import net .sf .jsqlparser .expression .operators .relational .LikeExpression ;
18- import net .sf .jsqlparser .expression .operators .relational .MinorThan ;
19- import net .sf .jsqlparser .expression .operators .relational .MinorThanEquals ;
20- import net .sf .jsqlparser .expression .operators .relational .NotEqualsTo ;
11+ import net .sf .jsqlparser .expression .operators .relational .*;
2112import net .sf .jsqlparser .parser .CCJSqlParserUtil ;
2213import net .sf .jsqlparser .schema .Column ;
2314import net .sf .jsqlparser .statement .select .AllColumns ;
@@ -183,6 +174,8 @@ private static void removeExpressionWithConstant(Expression expression,
183174 handleInExpression ((InExpression ) expression , removeFieldNames );
184175 } else if (expression instanceof LikeExpression ) {
185176 handleLikeExpression ((LikeExpression ) expression , removeFieldNames );
177+ } else if (expression instanceof Between ) {
178+ handleBetweenExpression ((Between ) expression , removeFieldNames );
186179 }
187180 } catch (JSQLParserException e ) {
188181 log .error ("JSQLParserException" , e );
@@ -226,6 +219,17 @@ private static void handleLikeExpression(LikeExpression likeExpression,
226219 updateLikeExpression (likeExpression , constantExpression );
227220 }
228221
222+ private static void handleBetweenExpression (Between between ,
223+ Set <String > removeFieldNames ) throws JSQLParserException {
224+ String columnName = SqlSelectHelper .getColumnName (between .getLeftExpression ());
225+ if (!removeFieldNames .contains (columnName )) {
226+ return ;
227+ }
228+ Between constantExpression =
229+ (Between ) CCJSqlParserUtil .parseCondExpression (JsqlConstants .BETWEEN_AND_CONSTANT );
230+ updateBetweenExpression (between , constantExpression );
231+ }
232+
229233 private static void updateComparisonOperator (ComparisonOperator original ,
230234 ComparisonOperator constantExpression ) {
231235 original .setLeftExpression (constantExpression .getLeftExpression ());
@@ -245,6 +249,12 @@ private static void updateLikeExpression(LikeExpression original,
245249 original .setRightExpression (constantExpression .getRightExpression ());
246250 }
247251
252+ private static void updateBetweenExpression (Between between , Between constantExpression ) {
253+ between .setBetweenExpressionEnd (constantExpression .getBetweenExpressionEnd ());
254+ between .setBetweenExpressionStart (constantExpression .getBetweenExpressionStart ());
255+ between .setLeftExpression (constantExpression .getLeftExpression ());
256+ }
257+
248258 public static String removeHavingCondition (String sql , Set <String > removeFieldNames ) {
249259 Select selectStatement = SqlSelectHelper .getSelect (sql );
250260 if (!(selectStatement instanceof PlainSelect )) {
@@ -373,6 +383,10 @@ private static Expression dealComparisonOperatorFilter(Expression expression,
373383 LikeExpression likeExpression = (LikeExpression ) expression ;
374384 Expression leftExpression = likeExpression .getLeftExpression ();
375385 return recursionBase (leftExpression , expression , sqlEditEnum );
386+ } else if (expression instanceof Between ) {
387+ Between between = (Between ) expression ;
388+ Expression leftExpression = between .getLeftExpression ();
389+ return recursionBase (leftExpression , expression , sqlEditEnum );
376390 }
377391 return expression ;
378392 }
0 commit comments