プライマリ・コンテンツに移動
Oracle® Big Data Discovery Cloud Service EQLリファレンス

E65371-04
目次へ
目次
索引へ移動
索引

前
次
機械翻訳について

数量詞

EQLでは、セットに対してブール式で使用する既存の数値と汎用数値が提供されます。

どちらのタイプの式も、SELECT句、WHERE句、HAVING句、ORDER BY句、結合条件など、ブール式を受け入れる任意のコンテキストで使用できます。

存在数量詞

既存の数量詞はSOMEキーワードを使用します。 既存の数量詞で、セット内のアイテムのいずれかが、使用される比較演算子に基づいて一致する場合、返される値はTRUEです。

存在する数量詞の構文は次のとおりです:
SOME id IN set SATISFIES (booleanExpr)
説明:
  • idは、比較されるアイテムの任意の識別子です。 識別子にはNCName形式を使用する必要があります。
  • setは、任意のセット・データ型のセットです。
  • booleanExprは、ブール(またはNULL)を生成する任意の式です。

式によって、booleanExpr内の識別子idがバインドされます。 このバインディングは、述語内に同じ名前を持つ他の属性を表示します。 このシャドウは、文修飾子を持たない識別子/属性への参照にのみ適用されることに注意してください。

既存の数量詞式を評価するには、EQLは指定されたセットのすべてのメンバーに対して述語式を評価します。 その後、EQLでは、これらの述語の値に基づいて数量詞の結果が次のように計算されます:
  1. setが空の場合、数量詞はFALSEです。
  2. それ以外の場合、setの1つ以上の要素に対してbooleanExprがTRUEであれば、数量詞はTRUEです。
  3. それ以外の場合、setid要素ごとにbooleanExprがFALSEであれば、数量詞はFALSEです。
  4. それ以外の場合(booleanExprの値はfalseまたはNULLで、少なくとも1つがNULL)、定量化子はNULLです。
この評価の結果は、次のとおりです:
  • SOME x IN { } SATISFIES (x > 0)はFALSEです。
  • x = 1の述語式はTRUEであるため、SOME x IN { -3, -2, 1 } SATISFIES (x > 0)はTRUEです。
  • x = 5の述語はTRUEであるため、SOME x IN { 5, 7, 10 } SATISFIES (x > 0)はTRUEです。
  • SOME x IN { 'foo', '3', '4' } SATISFIES (TO_INTEGER (x) > 0)はTRUEです。これは、x ='3'の述語がTRUEであるためです。
  • SOME x IN { 'foo', '-1', '-2' } SATISFIES (TO_INTEGER (x) > 0)がNULLです。 X = '-1'とx = '-2'の述語はfalseですが、x = 'foo'の場合はNULLです。
この既存数値の例では、本文は複数割当文字列属性です(複数のレコードに対する割当は'Robust'です):
RETURN results AS
SELECT 
   WineID AS idRec,
   WineType AS wines,
   Body AS bodyAttr
FROM WineState
WHERE SOME x IN Body SATISFIES (x = 'Robust')
ORDER BY idRec
この文の結果は次のようになります:
bodyAttr          idRec   wines
---------------------------------------------
| { Robust, Tannins } |  4 | Red            |
| { Robust }          |  6 | Red            |
| { Oak, Robust       |  8 | Red            |
| { Robust, Tannins } | 11 | Zinfandel      |
| { Fresh, Robust }   | 19 | White          |
| { Firm, Robust }    | 22 | Blanc de Noirs |
| { Robust }          | 23 | Brut           |
| { Robust }          | 24 | Brut           |
| { Firm, Robust }    | 25 | White          |
---------------------------------------------

Body='Robust'割当てのある9つのレコードのみが返されます。

ユニバーサル数量詞

汎用数量詞は、EVERYキーワードを使用します。 ユニバーサル数量詞では、セット内のすべてのアイテムが、使用される比較演算子に基づいて一致を持つ場合、返される値はTRUEです。

ユニバーサル数量詞の構文は次のとおりです:
EVERY id IN set SATISFIES (booleanExpr)
idsetおよびbooleanExprでは、既存の数量詞と同じ意味を持ちます。

式によって、booleanExpr内の識別子idがバインドされます。 このバインディングは、述語内に同じ名前を持つ他の属性を表示します。 このシャドウは、文修飾子を持たない識別子/属性への参照にのみ適用されることに注意してください。

既存の数量式と同様に、ユニバーサル数量詞式EQLでは、指定されたセットのすべてのメンバーについて述語式が評価されます。 その後、EQLでは、これらの述語の値に基づいて数量詞の結果が次のように計算されます:
  1. setが空の場合、数量詞はTRUEです。
  2. そうでない場合、setの少なくとも1つの要素に対してbooleanExprがFALSEであれば、数量詞はFALSEになります。
  3. そうでない場合、setの各要素に対してbooleanExprがTRUEであれば、数量詞はTRUEです。
  4. それ以外の場合(booleanExprの値はtrueまたはNULLであり、少なくとも1つがNULLである)、数量詞はNULLです。
この評価の結果は、次のとおりです:
  • EVERY x IN { } SATISFIES (x > 0)がTRUEの場合。
  • x = -3の述語がFALSEであるため、EVERY x IN { -3, -2, 1 } SATISFIES (x > 0)はFALSEです。
  • EVERY x IN { 5, 7, 10 } SATISFIES (x > 0)がTRUEの場合、述語はセットのすべての値に対してTRUEになるためです。
  • EVERY x IN { 'foo', '3', '4' } SATISFIES (TO_INTEGER (x) > 0)がNULLです。 x = '3'およびx = '4'に対して述語はtrueですが、x = 'foo'に対してはNULLです。
  • EVERY x IN { 'foo', '-1', '-2' } SATISFIES (TO_INTEGER (x)> 0)はFALSEです。これは、x = '-1'の述語がFALSEであるためです。
このユニバーサル数量詞の例は、前述の既存の数量詞の例とよく似ています:
RETURN results AS
SELECT 
   WineID AS idRec,
   WineType AS wines,
   Body AS bodyAttr
FROM WineState
WHERE (EVERY x IN Body SATISFIES (x = 'Robust')) AND (WineID IS NOT NULL)
ORDER BY idRec
この文の結果は次のようになります:
bodyAttr     idRec wines
--------------------------------
|            |  1 | Chardonnay |
|            |  2 | Chardonnay |
| { Robust } |  6 | Red        |
|            | 17 | Merlot     |
|            | 20 | White      |
|            | 21 | White      |
| { Robust } | 23 | Brut       |
| { Robust } | 24 | Brut       |
--------------------------------

返されるレコードは、本文=Robust割当て(レコード6、23および24)のみが含まれ、本文の割当てがないレコード(レコード1、2、17、20および21)のみです。

問合せでは、WHERE句でWineID IS NOT NULL式を使用します。 これにより、汎用式が通常はTRUEと評価されるが空のセットを返すシステムの他のレコードが返されることを回避できます。