File tree Expand file tree Collapse file tree 3 files changed +15
-13
lines changed
java/net/sf/jsqlparser/expression/operators/relational
jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/test/select Expand file tree Collapse file tree 3 files changed +15
-13
lines changed Original file line number Diff line number Diff line change 27
27
public class RegExpMySQLOperator extends BinaryExpression {
28
28
29
29
private RegExpMatchOperatorType operatorType ;
30
+ private boolean useRLike = false ;
30
31
31
32
public RegExpMySQLOperator (RegExpMatchOperatorType operatorType ) {
32
33
if (operatorType == null ) {
@@ -39,20 +40,23 @@ public RegExpMatchOperatorType getOperatorType() {
39
40
return operatorType ;
40
41
}
41
42
43
+ public boolean isUseRLike () {
44
+ return useRLike ;
45
+ }
46
+
47
+ public RegExpMySQLOperator useRLike () {
48
+ useRLike = true ;
49
+ return this ;
50
+ }
51
+
42
52
@ Override
43
53
public void accept (ExpressionVisitor expressionVisitor ) {
44
54
expressionVisitor .visit (this );
45
55
}
46
56
47
57
@ Override
48
58
public String getStringExpression () {
49
- switch (operatorType ) {
50
- case MATCH_CASESENSITIVE :
51
- return "REGEXP BINARY" ;
52
- case MATCH_CASEINSENSITIVE :
53
- return "REGEXP" ;
54
- default :
55
- }
56
- return null ;
59
+ return (useRLike ? "RLIKE" : "REGEXP" )
60
+ + (operatorType == RegExpMatchOperatorType .MATCH_CASESENSITIVE ? " BINARY" : "" );
57
61
}
58
62
}
Original file line number Diff line number Diff line change @@ -1998,7 +1998,7 @@ Expression RegularCondition() #RegularCondition:
1998
1998
| "@@" { result = new Matches(); }
1999
1999
| "~" { result = new RegExpMatchOperator(RegExpMatchOperatorType.MATCH_CASESENSITIVE); }
2000
2000
| <K_REGEXP> [ <K_BINARY> { binary=true; } ] { result = new RegExpMySQLOperator(binary?RegExpMatchOperatorType.MATCH_CASESENSITIVE:RegExpMatchOperatorType.MATCH_CASEINSENSITIVE); }
2001
- | <K_RLIKE> [ <K_BINARY> { binary=true; } ] { result = new RegExpMySQLOperator(binary?RegExpMatchOperatorType.MATCH_CASESENSITIVE:RegExpMatchOperatorType.MATCH_CASEINSENSITIVE); }
2001
+ | <K_RLIKE> [ <K_BINARY> { binary=true; } ] { result = new RegExpMySQLOperator(binary?RegExpMatchOperatorType.MATCH_CASESENSITIVE:RegExpMatchOperatorType.MATCH_CASEINSENSITIVE).useRLike() ; }
2002
2002
| "~*" { result = new RegExpMatchOperator(RegExpMatchOperatorType.MATCH_CASEINSENSITIVE); }
2003
2003
| "!~" { result = new RegExpMatchOperator(RegExpMatchOperatorType.NOT_MATCH_CASESENSITIVE); }
2004
2004
| "!~*" { result = new RegExpMatchOperator(RegExpMatchOperatorType.NOT_MATCH_CASEINSENSITIVE); }
Original file line number Diff line number Diff line change @@ -1991,11 +1991,9 @@ public void testRegexpBinaryMySQL() throws JSQLParserException {
1991
1991
String stmt = "SELECT * FROM mytable WHERE first_name REGEXP BINARY '^Ste(v|ph)en$'" ;
1992
1992
assertSqlCanBeParsedAndDeparsed (stmt );
1993
1993
}
1994
-
1994
+
1995
1995
public void testRlike () throws JSQLParserException {
1996
- String stmt = "SELECT * FROM mytable WHERE first_name RLIKE '^Ste(v|ph)en$'" ;
1997
- Statement st = CCJSqlParserUtil .parse (stmt );
1998
- assertStatementCanBeDeparsedAs (st , "SELECT * FROM mytable WHERE first_name REGEXP '^Ste(v|ph)en$'" );
1996
+ assertSqlCanBeParsedAndDeparsed ("SELECT * FROM mytable WHERE first_name RLIKE '^Ste(v|ph)en$'" );
1999
1997
}
2000
1998
2001
1999
public void testBooleanFunction1 () throws JSQLParserException {
You can’t perform that action at this time.
0 commit comments