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.