SUBSET関数

SUBSET行関数は、同じデータ型の2つのセットを入力とし、2番目のセットが最初のセットのサブセットである場合(にのみ)trueのブール値を返します。

SUBSET関数の構文は次のとおりです。
SUBSET(<set1>, <set2>)
ここで、
  • set1はセット・データ型の1つのセットです(mdex:string-setなど)。たとえば、set1は、複数割当ての文字列属性にすることができます。
  • set2set1と同じセット・データ型の1つのセットです。たとえば、set1が複数割当ての文字列属性である場合は、set2も文字列のセットにする必要があります(別の複数割当ての文字列属性など)。set2は、set1内に完全に含まれているかどうかがチェックされます。
たとえば、次の文があるとします。
SUBSET(A, B)
BがAのサブセットの場合(にのみ)SUBSETの結果はtrueです。
次に、その他の結果の例をいくつか示します({ }は空のセットを表しています)。
SUBSET({ }, { }) = TRUE
SUBSET({ 1, 2, 3 }, { }) = TRUE
SUBSET({ 1, 2 }, { 1, 2 }) = TRUE
SUBSET({ 1, 2, 3 }, { 1, 2 }) = TRUE
SUBSET({ 1, 3, 5 }, { 1, 2 }) = FALSE
SUBSET({ 1, 2 }, { 'x', 'y', 'z' }) yields a checking error because the two sets are not of the same data type

空のセットは常に、他のすべてのセット(空のセットも含む)のサブセットになります。

SUBSETの例

この例では、FlavorsとBodyの両方が複数割当ての文字列属性であり、WineIDはレコードの主キーです。
RETURN results AS
SELECT 
   WineID AS id,
   SUBSET(Body, Flavors) AS subAttrs
FROM WineState
WHERE WineID < 5
ORDER BY id
この文の結果は次のようになります。
id   subAttrs
-------------
| 1 | true  |
| 2 | true  |
| 3 | false |
| 4 | false |
-------------

結果を見ると、レコード1および2ではFlavorsセットがBodyセットのサブセットになっていますが、レコード3および4ではサブセットになっていません。