jirutka/rsql-parser

Are there any plans to support sql 'like' operation?

dskrashchuk opened this issue · 2 comments

Are there any plans to support sql 'like' operation?

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%'

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