Are there any plans to support sql 'like' operation?
dskrashchuk opened this issue · 2 comments
dskrashchuk commented
Are there any plans to support sql 'like' operation?
vineey commented
While not yet supported how about trying something like this code
private static final String WILDCARD = "*";
private AnyObject equal(ComparisonNode node) {
ComparisonOperator comparisonOperator = comparisonNode.getOperator();
List<String> arguments = comparisonNode.getArguments();
String valueArgument = arguments.get(0);
if (RSQLOperators.EQUAL.equals(comparisonOperator)) {
if (valueArgument.startsWith(WILDCARD) && valueArgument.endsWith(WILDCARD)) {
//do something
} else if (valueArgument.endsWith(WILDCARD)) {
//do something
} else if (valueArgument.startsWith(WILDCARD)) {
//do something
} else {
//do something
}
}
}
Then in your rql you can do this,
'name == Jo*'
means name like 'Jo%'
'name == *Jo'
means name like '%Jo'
'name == *Jo*'
means name like '%Jo%'
odemura commented
is the issue still opened?
the samples feature exactly that actor==*Bale
https://github.com/jirutka/rsql-parser/blame/master/README.adoc#L125
since 7 Feb 2016 (before the issue was opened)
6ba0472
and rsql-jpa follows it as well
https://github.com/tennaito/rsql-jpa/blob/master/src/main/java/com/github/tennaito/rsql/jpa/PredicateBuilder.java#L255