IS_MEMBER_OF関数

IS_MEMBER_OF行関数は、1つのアトミック値と1つのセットを取得して、アトミック値がセットの中に存在するかどうかを示すブール値を返します。

IS_MEMBER_OF関数の構文は次のとおりです。
IS_MEMBER_OF(<atomic-value>, <set>)
ここで、
  • atomic-valueはアトミック値で、整数セットの場合は50、文字列セットの場合は'test'などになります。また、単一割当て属性にすることもできます。atomic-valueは、set内に存在するかどうかがチェックされます。アトミック値の型は、セットの要素の型と一致している必要があります。
  • setは、その要素がatomic-valueと同じセット・データ型である1つのセットです。たとえば、atomic-valueが単一割当ての文字列属性である場合、setの要素も文字列にする必要があります。
次に、結果の例をいくつか示します({ }は空のセットを表しています)。
IS_MEMBER_OF(1, { }) = FALSE
IS_MEMBER_OF(1, { 1, 2, 3 }) = TRUE
IS_MEMBER_OF(1, { 2, 3, 4 }) = FALSE
IS_MEMBER_OF(NULL, { }) = NULL
IS_MEMBER_OF(NULL, { 1, 2, 3 }) = NULL
IS_MEMBER_OF(1, { 'a', 'b', 'c' }) yields a checking error because the atomic value and the set elements are not of the same data type

IS_MEMBER_OF関数は、メンバーシップ・チェック関数として意図されています。

IS_MEMBER_OFの例

例1: この例では、Scoreセット(整数要素があります)内に数値82 (整数です)が存在するかどうかを文が判別します。
RETURN results AS
SELECT 
   WineID AS idRec,
   IS_MEMBER_OF(82, Score) AS memberAttrs
FROM WineState
WHERE WineID BETWEEN 22 AND 25
ORDER BY idRec
この文の結果は次のようになります。
idRec  memberAttrs
--------------
| 22 | false |
| 23 | true  |
| 24 | false |
| 25 | true  |
--------------

結果を見ると、数値82はレコード23および25のScoreセットにはありますが、レコード22および24にはありません。

例2: この例は例1に似ていますが、IS_MEMBER_OF関数の最初の引数としてRanking単一割当て整数属性を使用し、2番目の引数としてScoreセット(整数要素があります)を使用している点が異なります。
RETURN results AS
SELECT 
   WineID AS idRec,
   IS_MEMBER_OF(Ranking, Score) AS memberAttrs
FROM WineState
ORDER BY idRec
例3: この例は例2に似ていますが、IS_MEMBER_OF関数をWHERE句内で使用している点が異なります。
RETURN results AS
SELECT 
   WineID AS idRec,
   Price AS prices
FROM WineState
WHERE IS_MEMBER_OF(Ranking, Score) AND Price IS NOT NULL
ORDER BY idRec

IN式の使用

IS_MEMBER_OF関数のかわりにIN式を使用して、メンバーシップをテストできます。この例について説明するために、例3を書き換えます。
RETURN results AS
SELECT 
   WineID AS idRec,
   Price AS prices
FROM WineState
WHERE Ranking IN Score AND Price IS NOT NULL
ORDER BY idRec

IN式の詳細は、「IN」を参照してください。