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