ALL/ NOT IN条件(値リスト)

ALL / NOT IN限定条件は、指定された値のリストと式(または式のリスト)を比較します。ALL条件は、ValueListのすべての値が、式(または式のリスト)と比較演算子で指定された関係にある場合にTRUEと評価されます。同様に、NOT IN条件は、式(または式のリスト)が、指定されたリスト内の値のいずれとも一致しない場合にTRUEと評価されます。

SQL構文

RowValueConstructor {CompOp ALL | NOT IN} ValueList

RowValueConstructorの構文は、次のとおりです。

RowValueConstructorElement | (RowValueConstructorList) | 

RowValueConstructorListの構文は、次のとおりです。

RowValueConstructorElement[{, RowValueConstructorElement} ... ]

RowValueConstructorElementの構文は、次のとおりです。

Expression | NULL

CompOpの構文は、次のとおりです。

{= | <> | > | >= | < | <= }

ValueListの要素が1つの場合の構文は、次のとおりです(カッコは不要です)。

ConstantExpression

ValueListの要素が複数ある場合の構文は、次のとおりです。

({ConstantExpression} [,...] )

ValueListが空の場合の構文は、次のとおりです。

( )

パラメータ

構成要素 説明

Expression

取得する値を指定します。ValueListの値は、式と互換性がある必要があります。式の構文の詳細は、「式の指定」を参照してください。

ConstantExpression

定数値または定数値になる式(数字、文字列、日付など)を指定します。バインドされた値(?または:DynamicParameter)、NULL、および定数値を返す関数のコールのサポートが含まれます。

=

等しい。

<>

異なる。

>

より大きい。

>=

以上。

<

未満。

<=

以下。

ALL

ValueListのすべての値が、式(または式のリスト)と比較演算子で指定された関係にある場合にTRUEになります。

ValueList

値のリストはRowValueConstructorの値と比較されます。

ValueListは、空のリスト(SQL生成ツールで生成される場合もある)にすることも、ConstantExpressionのエントリで構成することもできます。

ValueListには、列参照、シーケンス、副問合せ、ROWID値、またはROWNUM値を含めることはできません

RowValueConstructorがリストの場合は、ValueListをネストできます。たとえば: (x, y) not in ((1+1, 2), (abs(-1), 5+1))

説明

  • Expressionの値がXで、(a,b, ..., z)ValueListの要素、OPが比較演算子の場合は、次の関係が成立します。

    • X OP ALL (a,b,...,z)は、X OP a AND X OP b AND...AND X OP zと同じです。

  • Expressionの値がXで、(a,b,..., z)Value­Listの要素である場合は、次の関係が成立します。

    • X NOT IN (a,b,...,z)は、NOT (X IN (a,b,...,z))と同じです。

  • すべての文字データ型は、NLS_SORTセッション・パラメータの現在の値に従って比較されます。

  • TimesTenで互換性のある異なるデータ型の値が比較される方法については、「数値データ型」を参照してください。

  • ALLを設定した、NOT INまたはNOT EXISTSを、OR式で指定できます。

  • ALLを設定した、INまたはEXISTSを、OR式で指定できます。

  • 空のValueListを評価すると、Expression NOT INの結果はTRUEになります。

  • RowValueConstructorListが指定されている場合は、演算子=および<>のみを使用できます。

NOT IN条件で空の選択リストを問い合せる例を示します。

SELECT * FROM t1 WHERE x1 NOT IN ();

ValueListの例は、「ANY/ IN条件(値リスト)」の「例」を参照してください。