Filters node-tuples based on the outcome of a binary operation.
For any comparison, {@link #getOperand2 operand2} always evaluates to ascalar value. In contrast, {@link #getOperand1 operand1} may evaluate toan array of values (for example, the value of a multi-valued property), in which case the comparison is separately performed for each element of the array, and the
Comparison constraint is satisfied as a whole if the comparison against
any element of the array is satisfied.
If {@link #getOperand1 operand1} and {@link #getOperand2 operand2}evaluate to values of different property types, the value of {@link #getOperand2 operand2} is converted to the property type ofthe value of {@link #getOperand1 operand1}. If the type conversion fails, the query is invalid.
Certain operators may only be applied to values of certain property types. The following describes required operator support for each property type:
STRING EqualTo, NotEqualTo, LessThan, LessThanOrEqualTo, GreaterThan, GreaterThanOrEqualTo, Like
BINARY DATE, LONG, DOUBLE, DECIMAL EqualTo, NotEqualTo, LessThan, LessThanOrEqualTo, GreaterThan, GreaterThanOrEqualTo
BOOLEAN, NAME, PATH, REFERENCE, WEAKREFERENCE, URI
If {@link #getOperator operator} is not supported for the property type of{@link #getOperand1 operand1}, the query is invalid.
If {@link #getOperand1 operand1} evaluates to null (for example, if theoperand evaluates the value of a property which does not exist), the constraint is not satisfied.
The
EqualTo operator is satisfied
only if the value of {@link #getOperand1 operand1} equals the value of{@link #getOperand2 operand2}.
The
NotEqualTo operator is satisfied
unless the value of {@link #getOperand1 operand1} equals the value of{@link #getOperand2 operand2}.
The
LessThan operator is satisfied
only if the value of {@link #getOperand1 operand1} is ordered
before the value of{@link #getOperand2 operand2}.
The
LessThanOrEqualTo operator is satisfied
unless the value of {@link #getOperand1 operand1} is ordered
after the value of{@link #getOperand2 operand2}.
The
GreaterThan operator is satisfied
only if the value of {@link #getOperand1 operand1} is ordered
after the value of{@link #getOperand2 operand2}.
The
GreaterThanOrEqualTo operator is satisfied
unless the value of {@link #getOperand1 operand1} is ordered
before the value of{@link #getOperand2 operand2}.
The
Like operator is satisfied only if the value of {@link #getOperand1 operand1}
matches the pattern specified by thevalue of {@link #getOperand2 operand2}, where in the pattern:
- the character "
%" matches zero or more characters, and - the character "
_" (underscore) matches exactly one character, and - the string "
\x" matches the character "x", and - all other characters match themselves.
@since JCR 2.0