IS_EMPTYおよびIS_NOT_EMPTY関数

IS_EMPTYおよびIS_NOT_EMPTY関数は、セットが空であるかどうかを判別します。IS EMPTYおよびIS NOT EMPTY関数の構文は、それぞれの関数の代替の構文になります。

注意: セットでは、IS NULLおよびIS NOT NULL演算はサポートされていません。

例に使用するサンプル・データ

これらの関数について説明するために使用するサンプル・データは、Body複数割当ての文字列属性と5つのレコードから構成されています。
Rec ID     Body attribute
---------------------------
| 16 | { Silky, Tannins } |
| 17 | { }                |
| 18 | { Silky, Tannins } |
| 19 | { Fresh, Robust }  |
| 20 | { }                |
| 21 | { }                |
| 22 | { Firm, Robust }   |
---------------------------

レコードのうち3つにはBodyが割り当てられておらず(このため、空のセットになります)、他の3つのレコードにはBodyが2つ割り当てられています。

例では、これらの関数はWHERE句内で使用されています。ただし、これらの関数は、SELECTHAVING句など、任意式が使用できるすべての場所で使用できます。

IS_EMPTY関数

IS_EMPTY関数は、1つのセットを取得して、そのセットが空である場合にTRUEを返します。IS_EMPTY関数の構文は次のとおりです。
IS_EMPTY(<set>)
ここで、setはセット・データ型の1つのセットです(mdex:string-setmdex:long-setなど)。たとえば、setは、複数割当てのdouble属性にすることができます。
次に、2つの結果の例を示します({ }は空のセットを表しています)。
IS_EMPTY({ }) = TRUE
IS_EMPTY({ 1 }) = FALSE
この例では、Body属性が空であるかどうかがチェックされます。
RETURN results AS
SELECT 
   WineID AS idRec,
   Body AS bodyAttr
WHERE (WineID BETWEEN 16 AND 22) AND (IS_EMPTY(Body))
ORDER BY idRec
この文の結果は次のようになります。
idRec
------
| 17 |
| 20 |
| 21 |
------

結果を見ると、レコード17、20および21のみが返されていますが、これはBodyセットが空であるためです。

IS EMPTY関数

IS EMPTY関数の構文はIS_EMPTYとは異なりますが、セットが空である場合は同様にTRUEを返します。

IS EMPTY関数の構文は次のとおりです。
<set> IS EMPTY
ここで、setはセット・データ型の1つのセットです(複数割当てのdouble属性など)。
前述のIS_EMPTYの例は次のように書き換えられます。
RETURN results AS
SELECT 
   WineID AS idRec,
   Body AS bodyAttr
WHERE (WineID BETWEEN 16 AND 22) AND (Body IS EMPTY)
ORDER BY idRec

この例の結果は、前述のIS_EMPTYの例の場合と同じです。

IS_NOT_EMPTY関数

IS_NOT_EMPTY関数は、1つのセットを取得して、そのセットが空でない場合にTRUEを返します。IS_NOT_EMPTY関数の構文は次のとおりです。
IS_NOT_EMPTY(<set>)
ここで、setはセット・データ型の1つのセットです。たとえば、setは、複数割当てのジオコード属性にすることができます。
次に、2つの結果の例を示します({ }は空のセットを表しています)。
IS_NOT_EMPTY({ }) = FALSE
IS_NOT_EMPTY({ 1 }) = TRUE
この例では、Body属性が空ではないかどうかがチェックされます。
RETURN results AS
SELECT 
   WineID AS idRec,
   Body AS bodyAttr
WHERE (WineID BETWEEN 16 AND 22) AND (IS_NOT_EMPTY(Body))
ORDER BY idRec
この文の結果は次のようになります。
bodyAttr              idRec
----------------------------
| { Silky, Tannins }  | 16 |
| { Silky, Tannins }  | 18 |
| { Fresh, Robust }   | 19 |
| { Firm, Robust }    | 22 |
----------------------------

結果を見ると、レコード16、18、19および22が返されていますが、これはBodyセットが空ではないためです。ただし、レコード17、20および21は、Bodyが割り当てられていないため返されません(このため、これらのセットは空になります)。

IS NOT EMPTY関数

IS NOT EMPTY関数の構文はIS_NOT_EMPTYとは異なりますが、セットが空ではない場合は同様にTRUEを返します。

IS NOT EMPTY関数の構文は次のとおりです。
<set> IS NOT EMPTY
ここで、setはセット・データ型の1つのセットです(複数割当ての文字列属性など)。
前述のIS_NOT_EMPTYの例は次のように書き換えられます。
RETURN results AS
SELECT 
   WineID AS idRec,
   Body AS bodyAttr
WHERE (WineID BETWEEN 16 AND 22) AND (Body IS NOT EMPTY)
ORDER BY idRec

この例の結果は、前述のIS_NOT_EMPTYの例の場合と同じです。