EQLはコレクションの複数割当属性をセットとして表します。
setは要素のグループで構成され、通常は複数割当属性の値から導出されます。 EQLセットは数学セットのように動作するためのものです: セット内の要素の順序は指定されません(一般に監視できません)。 空のセットは、要素を含まないセットです。
セット内のすべての要素は同じデータ型である必要があります。 セット内の要素が2つの複数割当属性(INTERSECTION
行関数などを使用して)から取得されている場合、これら2つの複数割当属性が同じデータ型である必要があります。 セットに重複する値を含めることはできず、セットに他のセットを含めることはできません。
SELECT
を使用すると、セット内のその属性の値が返されます。
SET
関数の引数として。
UNION
関数を使用すると、2つの入力セットの結合であるセットが戻されます。 これらのセット式には、操作を実行するためのセットが少なくとも1つ必要であることに注意してください。
これらのメソッドについては、この項で説明します。
ただし、セットはEQL問合せ間で永続的ではありません。
データ型の設定
mdex:boolean-set
mdex:dateTime-set
mdex:double-set
mdex:duration-set
mdex:geocode-set
mdex:long-set
mdex:string-set
mdex:time-set
{3, 4.0, 'five'}
整数、倍精度浮動小数点および文字列を含むため無効です。
セットとNULL
セットにNULL値を含めることはできません。 また、セットはNULLにはできませんが、空になる場合があります。 これらの要件は、複数割当コレクション属性とセット・タイプのその他の式の両方に適用されます。
コレクション・レコードに複数割当属性に対する割当がない場合、EQL問合せではそのレコードの属性値が空のセットになります。
EQL文の結果(DEFINE
またはRETURN
のいずれか)にはセットが含まれる場合があります。 これは、たとえば、そのエンティティを使用する問合せに複数割当属性の値をすべて提供するエンティティ(ビュー)を定義できることを意味します。
IS NULL
操作およびIS NOT NULL
操作はセットに対してはサポートされません。 かわりに、IS_EMPTY
関数とIS_NOT_EMPTY
関数を使用して、集合が空かどうかを判別してください。 同様に、IS_EMPTY
およびIS_NOT_EMPTY
関数はアトミック値(単一割当て属性など)には使用できません。
等価の設定
等価の設定は数学的等価と同じです: 2つのセットは、完全に同じ要素を含む場合にのみ等しく、以下とは等しくなります。 セット内の要素の順序が重要ではありません。 2つの空のセットは同等です。
等価性と非等価性の設定は、同じタイプの2つのセットに対してのみ定義されます。 たとえば、等価性についてmdex:long-set
とmdex:geocode-set
を比較することはできません。比較するとEQLタイプ・エラーになります。
=
(等しい)演算子および<>
(等しくない)演算子を使用して、セット間の等価性をテストできます。 集合に対する<
(より小さい)演算子と>
(より大きい)演算子は定義されていないことに注意してください。
集合、関数および演算子
この章では、セットで使用される集計および行関数について説明します。
ARB
のセットは、グループ内のすべての行(空のセットと空でないセットの両方)を参照し、いずれかの行のセット値を選択します。 この関数の詳細は、ARBを参照してください。
COUNT
では、NULL以外のすべてのセット(つまり、空のものを含む、グループ内のすべてのセット)がカウントされます。 詳細は、「COUNT関数」を参照してください。
COUNT_APPROX
では、NULL以外のすべてのセットもカウントされます。 詳細は、COUNT_APPROXを参照してください。
COUNTDISTINCT
では、空のセットを含むすべてのセットがカウントされます。 詳細は、「COUNTDISTINCT関数」を参照してください。
APPROXCOUNTDISTINCT
では、空のセットを含むすべてのセットもカウントされます。 詳細は、「APPROXCOUNTDISTINCT関数」を参照してください。
HAS_REFINEMENTS
特定の属性が、現在のナビゲーション状態に暗黙的でない絞込みを持つかどうか。 詳細は、HAS_REFINEMENTSを参照してください。
前述のように、=
(等価)演算子および<>
(等しくない)演算子を使用して、セット間の等価性をテストできます。 他の演算子(*乗算演算子など)は、セットに対して使用できません。