Operators ========= All operators are transformed to the corresponding functions at the query parsing stage, in accordance with their precedence and associativity. Access operators ----------------- ``a[N]`` - Access to an array element, arrayElement(a, N) function. ``a.N`` - Access to a tuple element, tupleElement(a, N) function. Numeric negation operator ---------------------------- ``-a`` - negate(a) function Multiplication and division operators ----------------------------- ``a * b`` - multiply(a, b) function ``a / b`` - divide(a, b) function ``a % b`` - modulo(a, b) function Addition and subtraction operators ------------------------------ ``a + b`` - plus(a, b) function ``a - b`` - minus(a, b) function Comparison operators ------------------- ``a = b`` - equals(a, b) function ``a == b`` - equals(a, b) function ``a != b`` - notEquals(a, b) function ``a <> b`` - notEquals(a, b) function ``a <= b`` - lessOrEquals(a, b) function ``a >= b`` - greaterOrEquals(a, b) function ``a < b`` - less(a, b) function ``a > b`` - greater(a, b) function ``a LIKE s`` - like(a, b) function ``a NOT LIKE s`` - notLike(a, b) function ``a BETWEEN b AND c`` - equivalent to a >= b AND a <= c Operators for working with data sets ---------------------------------- *See the section "IN operators".* ``a IN ...`` - in(a, b) function ``a NOT IN ...`` - notIn(a, b) function ``a GLOBAL IN ...`` - globalIn(a, b) function ``a GLOBAL NOT IN ...`` - globalNotIn(a, b) function Logical negation operator ------------------------------ ``NOT a`` - ``not(a)`` function Logical "AND" operator ------------------------- ``a AND b`` - function ``and(a, b)`` Logical "OR" operator --------------------------- ``a OR b`` - function ``or(a, b)`` Conditional operator ----------------- ``a ? b : c`` - function ``if(a, b, c)`` Conditional expression ------------------ .. code-block:: sql CASE [x] WHEN a THEN b [WHEN ... THEN ...] ELSE c END If x is given - transform(x, [a, ...], [b, ...], c). Otherwise, multiIf(a, b, ..., c). String concatenation operator ------------------------- ``s1 || s2`` - concat(s1, s2) function Lambda creation operator ---------------------------------- ``x -> expr`` - lambda(x, expr) function The following operators do not have a priority, since they are brackets: Array creation operator -------------------------- ``[x1, ...]`` - array(x1, ...) function Tuple creation operator ------------------------- ``(x1, x2, ...)`` - tuple(x2, x2, ...) function Associativity ---------------- All binary operators have left associativity. For example, ``'1 + 2 + 3'`` is transformed to ``'plus(plus(1, 2), 3)'``. Sometimes this doesn't work the way you expect. For example, ``'SELECT 4 > 3 > 2'`` results in ``0``. For efficiency, the 'and' and 'or' functions accept any number of arguments. The corresponding chains of AND and OR operators are transformed to a single call of these functions.