リファレンスガイド> SQL演算子のTDVサポート> 条件演算子> INとNOTIN
 
INとNOT IN
IN演算子は、特定の値がターゲット値のリスト内の任意の値と一致するかどうかを判別するために使用されます。ターゲット値のリストは、サブクエリを使用して生成できます。
IN演算子には2つの形式があります。 1つの形式は式を使用します。もう1つはサブクエリを使用します。
構文1
<source-expression [, source-expression]>
[NOT] IN <scalar-expression-list>
構文2
<source-expression [, source-expression]>
[NOT] IN <subquery [, subquery]>
備考
INは、<(より小さい)やLIKEのような比較演算子です。
INは、条件式を使用できる場所であればどこでも有効です。つまり、INをWHERE句、HAVING句、またはJOIN ON句、およびCASE式に配置できます。
ターゲットリスト(<scalar-expression-list>)内のすべての式は、ソース式(<source-expression>)と互換性があるか、暗黙的にキャスト可能である必要があります。逆に。
次の例のように、ターゲットリストのアイテムがすべて同じタイプではない場合:
ID IN (1000, ‘X’, 12.0)
 
リストは次の形式に変換されます。
(left = right1) OR (left = right2) OR (left = right3)
 
必要に応じてCASE機能を使用します。
INは、相互に比較可能または暗黙的にキャスト可能なデータタイプで使用できます。
IN条件をANDおよびOR条件と組み合わせることができます。
式AIN(B,C)は、式A = BまたはA = Cと同等です。
NOT INを使用して、IN条件を無効にすることができます。つまり、NOT INは、ターゲットリストにない値を指定します。
サブクエリは、互換性のあるデータタイプの1つの列のみを返すことができます。ただし、複数の行を返すことができます。
サブクエリは、親クエリを実行する前に1回実行され、IN句の値のリストに入力されます。
AND条件とOR条件を使用して、IN条件を組み合わせることができます。
INは、複数のソース(左側)式、およびサブクエリ内の複数の値を取ることができます。ただし、右側の値の数は左側の値の数と一致する必要があります。
複数の値のセットを使用できます。
例(構文1、文字列でINを使用)
SELECT customers.CompanyName, customers.StateOrProvince
FROM /shared/examples/ds_orders/customers customers
WHERE StateOrProvince IN (‘CA’, ‘PA’)
例(構文1、数値でINを使用)
SELECT ProductId, ProductName
FROM /shared/examples/ds_inventory/products
WHERE CategoryID IN (5,6)
例(構文1、日付でINを使用)
SELECT purchaseorders.ShipDate, SupplierID
FROM /shared/examples/ds_inventory/purchaseorders PurchaseOrders
WHERE ShipDate IN (CAST ('2003-02-06' AS DATE), CAST ('2003-02-07' AS DATE) )
例(構文1、ANDおよびORでINを使用)
SELECT purchaseorders.ShipDate, SupplierID
FROM /shared/examples/ds_inventory/purchaseorders PurchaseOrders
WHERE ShipDate IN (TO_DATE (‘2003-02-06’))
AND ShippingMethodID = 3
OR DatePromised = ‘2003-02-02’
OR ShipDate IN (‘2001-05-08’, DATE ‘2001-04-01’, ‘2000-02-25’)
例(構文2、INを使用)
SELECT Customers.ContactName
FROM /shared/examples/ds_orders/Customers Customers
WHERE City IN (SELECT City
               FROM /shared/examples/ds_orders/Customers Customers
               WHERE City = ‘New York’)
例(構文2、NOT INを使用)
SELECT Customers.ContactName, CompanyName
FROM /shared/examples/ds_orders/Customers Customers
WHERE City
NOT IN (SELECT City
        FROM /shared/examples/ds_orders/Customers Customers
        WHERE City = ‘New York’)