ANYまたはIN限定条件は、指定された値のリストと式(または式のリスト)を比較します。 ANY条件は、ValueListの1つ以上の値が、式(または式のリスト)と比較演算子に指定した関係にある場合にTRUEと評価されます。同様に、IN条件は、式(または式のリスト)が、指定されたリスト内の値のいずれかと一致する場合にTRUEと評価されます。
RowValueConstructor {CompOp {ANY| SOME} | IN} ValueList
RowValueConstructorの構文は、次のとおりです。
RowValueConstructorElement | (RowValueConstuctorList) |
RowValueConstructorListの構文は、次のとおりです。
RowValueConstructorElement[{, RowValueConstructorElement} ... ]
RowValueConstructorElementの構文は、次のとおりです。
Expression | NULL
CompOpの構文は、次のとおりです。
{= | <> | > | >= | < | <= }
ValueListの要素が複数ある構文は、次のとおりです。
({Constant | ? | :DynamicParameter} [,...] )
カッコで囲まれていないValueListの要素が1つの構文は、次のとおりです。
Constant | ? | :DynamicParameter
ValueListが空の構文は、次のとおりです。
( )
ValueListが式のリストである構文は、次のとおりです。
(({Constant | ? | :DynamicParameter} [,...]))
パラメータ
構成要素 | 説明 |
---|---|
Expression |
取得する値を指定します。ValueList の値は、式と互換性がある必要があります。式の構文については、「式の指定」を参照してください。 |
= |
等しい |
<> | 異なる |
> | 大きい |
>= | 以上 |
< |
小さい |
<= |
以下 |
{ANY|
SOME} |
ValueList の1つ以上の値が、式(または式のリスト)と比較演算子に指定した関係にある場合にTRUEとなります。SOMEはANYのシノニムです。 |
ValueList |
式(または式のリスト)の値と比較する値のリストです。ValueList には、列参照または副問合せを含めることはできません。ValueList は、左側のオペランドがリストの場合にネストできます。
|
説明
Expression
の値がX
で、(a,b, ..., z)
がValueList
の要素、OP
が比較演算子の場合は、次のような関係となります。
X OP ANY (a,b,...,z)
は、X OP a OR X OP b OR...OR X OP z
と同じです。
Expression
の値がX
で、(a,b,..., z)
がValueList
の要素である場合は、次のような関係となります。
X IN (a,b,...,z)
は、X = a OR X = b OR...OR X = z
と同じです。
文字列は、ASCIIデータのASCII照合順序に従って比較されます。
ValueList
には、NULLを指定できません。
互換性のある異なるデータ型の値をTimesTenで比較する方法については、「数値データ型」を参照してください。
空のValueList
を評価すると、Expression
INの結果はFALSEとなります。
例
項目100、200または300の発注が含まれている項目番号をすべて選択します。
SELECT DISTINCT OrderItems.ItemNumber FROM OrderItems WHERE OrderItems.Quantity = ANY (100, 200, 300)
重量が12、16、17の部品の番号を検索します。
SELECT Parts.PartNumber FROM Parts WHERE Parts.Weight IN (12, 16, 17);
シリアル番号が'1123-P-01'
、'1733-AD-01'
、:SerialNumber
または:SerialInd
である部品の部品番号を検索します。:SerialNumber
と:SerialInd
は動的パラメータで、その値は実行時に指定されます。
SELECT PartNumber FROM Purchasing.Parts WHERE SerialNumber IN ('1123-P-01', '1733-AD-01',:SerialNumber, :SerialInd);
IN条件で空の選択リストを問い合せる例を示します。
SELECT * FROM t1 WHERE x1 IN ();
IN条件に式のリストを使用した例を示します。
SELECT * FROM t1 WHERE (x1,y1) IN ((1,2), (3,4));
次に、IN条件に式のリストを使用した例を示します。 この問合せは、department_id = 240
およびlocation_id = 1700
である部門のdepartment_name
を返します。
注意: IN条件の右側の式は、二重カッコ(( ))で囲む必要があります。 |
Command> select department_name from departments where (department_id, location_id) in ((240,1700)); < Government Sales > 1 row found.