セット・コンストラクタ

EQLを使用すると、ユーザーは問合せ内に直接セットを記述できます。

セット・コンストラクタの構文は次のとおりです。
{<expr1> [,<expr2>]*}
ここで、中カッコにより、1つ以上の式をカンマ区切りのリストとして囲みます。
たとえば、次に示すのは整数セットです。
{ 1, 4, 7, 10 }
一方、文字列セットは次のようになります。
{ 'Red', 'White', 'Merlot', 'Chardonnay' }
セット・コンストラクタの使用の際には、次の点に注意してください。
  • セット・コンストラクタは、式が有効である問合せ内のどこにでも出現する可能性があります。(セット・コンストラクタにはセット型が指定されているため、アトミック値を必要とするコンテキスト内でセット・コンストラクタを使用すると、EQLチェック・エラーが発生します。)
  • セット・コンストラクタの個別の要素は、型が正しいかぎり、不定の式になる場合があります。たとえば、x、yおよびzが整数であるかぎり、次のように記述できます。
    { x, y + z, 3 }
  • 中カッコ内のすべての式を同じ型にする必要があります。たとえば、整数と文字列を混在させることはできません。
  • 空のセット・コンストラクタは使用できず、中カッコ内に最低1つの式を含める必要があります。

EQLはセット・コンストラクタ内の整数を必要に応じてdoubleに昇格することに注意してください。したがって、{1, 2}の結果はmdex:long-set型で、{1, 2.5}の結果はmdex:double-set型です。

セット・コンストラクタの例

この最初の例では、SELECT句が、2つの要素として'Red'および'White'を含む文字列型のセット(名前はselectWines)を作成します。次に、selectWinesセットは、HAVING句内で返されるレコードを、WineType割当てが'Red'または'White'のいずれかであるレコードに制限するために使用されます。
RETURN results AS
SELECT
   {'Red', 'White'} AS selectWines,
   WineID AS idRec,
   WineType AS wines,
   Body AS bodyAttr
FROM WineState
HAVING wines IN selectWines
ORDER BY idRec
この2番目の例は最初の例によく似ていますが、WHERE句内でセットを使用する点が異なります。
RETURN results AS
SELECT
   WineID AS idRec,
   WineType AS wines,
   Body AS bodyAttr
FROM WineState
WHERE WineType IN {'Red', 'White'} 
ORDER BY idRec

いずれの問合せでも、WineTypeが'Red'または'White'であるレコードのみが返されます。