演算子の優先順位のルール

EQLでは、次に示す優先順位ルールが演算子に対して強制的に適用されます。

ルールは、降順に示しています。
  1. カッコ(およびルックアップ式とIN式の角カッコ)。カッコはいつでも、別の優先順位を指定するために、または優先順位を明確にするために自由に追加できます。
  2. * /
  3. + -
  4. = <> < > <= >=
  5. IS (IS NULLIS NOT NULLIS EMPTYIS NOT EMPTY)
  6. IN
  7. BETWEEN
  8. NOT
  9. AND
  10. OR

IN以外、バイナリ演算子は左結合です(JOINのすべての演算子と同様)。IN(セット・メンバーシップの場合)には結合性はありません(たとえば、x IN y IN zは構文エラーになります。)

セットに対する比較

セット(複数割当てのデータ)に対して値を比較する際には、適切なセット関数および式を使用する必要があります。

たとえば、Priceが単一割当てのdouble属性の場合、これは正しい構文です。
RETURN Results AS
SELECT Price AS prices
FROM ProductsState
WHERE Price > 20
ただし、Scoreが複数割当ての整数属性の場合、この構文は誤りです。
RETURN Results AS
SELECT Score AS ratings
FROM ProductsState
WHERE Score > 80
エラー・メッセージは次のとおりです。
In statement "Results": in WHERE clause: The comparison operators are not defined on arguments
of types mdex:long-set and mdex:long

このエラー・メッセージは、Scoreがセットであるため(mdex:long-setデータ型)、整数と比較できないことを示しています(80はmdex:longデータ型です)。

この例のように、問合せを書き換える必要があります。
RETURN Results AS
SELECT Score AS Ratings
FROM ProductsState
WHERE SOME x IN Score SATISFIES (x > 80)

この例では、存在数量詞式を使用しています。