8
8
import net .sf .jsqlparser .expression .Parenthesis ;
9
9
import net .sf .jsqlparser .expression .operators .conditional .AndExpression ;
10
10
import 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 .*;
21
12
import net .sf .jsqlparser .parser .CCJSqlParserUtil ;
22
13
import net .sf .jsqlparser .schema .Column ;
23
14
import net .sf .jsqlparser .statement .select .AllColumns ;
@@ -183,6 +174,8 @@ private static void removeExpressionWithConstant(Expression expression,
183
174
handleInExpression ((InExpression ) expression , removeFieldNames );
184
175
} else if (expression instanceof LikeExpression ) {
185
176
handleLikeExpression ((LikeExpression ) expression , removeFieldNames );
177
+ } else if (expression instanceof Between ) {
178
+ handleBetweenExpression ((Between ) expression , removeFieldNames );
186
179
}
187
180
} catch (JSQLParserException e ) {
188
181
log .error ("JSQLParserException" , e );
@@ -226,6 +219,17 @@ private static void handleLikeExpression(LikeExpression likeExpression,
226
219
updateLikeExpression (likeExpression , constantExpression );
227
220
}
228
221
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
+
229
233
private static void updateComparisonOperator (ComparisonOperator original ,
230
234
ComparisonOperator constantExpression ) {
231
235
original .setLeftExpression (constantExpression .getLeftExpression ());
@@ -245,6 +249,12 @@ private static void updateLikeExpression(LikeExpression original,
245
249
original .setRightExpression (constantExpression .getRightExpression ());
246
250
}
247
251
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
+
248
258
public static String removeHavingCondition (String sql , Set <String > removeFieldNames ) {
249
259
Select selectStatement = SqlSelectHelper .getSelect (sql );
250
260
if (!(selectStatement instanceof PlainSelect )) {
@@ -373,6 +383,10 @@ private static Expression dealComparisonOperatorFilter(Expression expression,
373
383
LikeExpression likeExpression = (LikeExpression ) expression ;
374
384
Expression leftExpression = likeExpression .getLeftExpression ();
375
385
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 );
376
390
}
377
391
return expression ;
378
392
}
0 commit comments