EXISTS 関数

EXISTS 関数は、リストに 1 つ以上のエレメントが含まれているかどうか (つまり、リストがあるかどうか) を示すブール値を戻します。

構文

構文図を読むビジュアル構文図をスキップEXISTS(ListExpression)

ListExpression で指定されたリストに 1 つ以上のエレメントが含まれている場合、EXISTS は TRUE を戻します。 リストにエレメントが含まれていない場合は、EXISTS は FALSE を戻します。

ListExpression はリストを戻す式です。 例えば、以下の式はすべてリストを戻します。
  • LIST コンストラクター
  • [] 配列標識を使用したフィールド参照
  • 一部の SELECT 式 (リストを戻さないものもある)

リストに少なくとも 1 つのエレメントが含まれているかどうかのみを知りたい場合、EXISTS は、CARDINALITY 関数を含む式 (例えば、 CARDINALITY(ListExpression ) <> 0) よりも速く実行されます。

この関数の典型的な使用法としては、フィールドがあるかどうかを判別する場合があります。

-- Determine whether the F1 array exists in the message. Note that the [ ]
-- are required
DECLARE Field1Exists BOOLEAN EXISTS(OutputRoot.XMLNS.Data.Source.F1[]);
-- Determine whether the F1 array contains an element with the value 'F12'.
-- Again note that the [ ] are required
DECLARE Field1F12Exists BOOLEAN 
  EXISTS(SELECT F.* FROM OutputRoot.XMLNS.Data.Source.F1[] AS F where F = 'F12');