>>-+-expression1--+------+--IN----+-(fullselect1)----------------+-+-> | '-NOT--' | .-,----------------. | | | | V | | | | +-(------expression2----+---)--+ | | '-expression2------------------' | | .-,----------------. | | V | | '-(------expression3----+---)----+------+--IN----(fullselect2)--' '-NOT--' >--------------------------------------------------------------><
IN 述部は、1 つの値または複数の値を値の集合と比較します。
全選択は、 IN キーワードの左側に指定されている式の数と同じ数の列を識別しなければなりません (SQLSTATE 428C4)。 全選択は、任意の行数を戻すことができます。
expression IN expression以下の形式の基本述部と同等です。
expression = expression
expression IN (fullselect)以下の形式の比較述部と同等です。
expression = ANY (fullselect)
expression NOT IN (fullselect)以下の形式の比較述部と同等です。
expression <> ALL (fullselect)
expression IN (expressiona, expressionb, ..., expressionk)以下と同等です。
expression = ANY (fullselect)この fullselect は、values 文節形式では次のようになります。
VALUES (expressiona), (expressionb), ..., (expressionk)
(expressiona, expressionb,..., expressionk) IN (fullselect)以下の形式の比較述部と同等です。
(expressiona, expressionb,..., expressionk) = ANY (fullselect)
IN 述部の expression1 および expression2 の値、 または fullselect1 の列には、互換性が必要です。 IN 述部の expression3 の各値、 およびそれに対応する fullselect2 の列にも互換性が必要です。 比較で使用される結果の属性については、結果のデータ・タイプに関する規則を参照してください。
IN 述部の式の値 (全選択の対応する列を含めて) のコード・ページが異なっていても構いません。 変換が必要な場合は、ストリング変換に関する規則をまず IN リストに適用し、 次に第 2 オペランドとして IN リストの導出コード・ページを使って同じ規則を述部に適用することによって、 コード・ページが決定されます。
例:
例 1: DEPTNO 列で評価の対象となる行の値に D01、B01、または C01 が含まれている場合、 以下は真であると評価されます。
DEPTNO IN ('D01', 'B01', 'C01')
例 2: 左側の EMPNO (従業員番号) が部門 E11 の従業員の EMPNO と一致する場合のみ、 以下は真であると評価されます。
EMPNO IN (SELECT EMPNO FROM EMPLOYEE WHERE WORKDEPT = 'E11')
例 3: 以下の情報に基づき、COL_1 列の行の特定の値が、 リスト内のいずれかの値と一致する場合、この例は真であると評価されます。
式 | タイプ | コード・ページ |
---|---|---|
COL_1 | 列 | 850 |
HV_2 | ホスト変数 | 437 |
HV_3 | ホスト変数 | 437 |
CON_1 | 定数 | 850 |
ここで、以下の述部を評価すると、
COL_1 IN (:HV_2, :HV_3, CON_4)
ストリング変換に関する規則に基づいて、2 個のホスト変数がコード・ページ 850 に変換されます。
例 4: EMENDATE に指定された年 (プロジェクトの従業員の活動が終了した日付) が、 リストに指定された値のいずれか (現在の年または過去 2 年) と一致する場合、 以下は真として評価されます。
YEAR(EMENDATE) IN (YEAR(CURRENT DATE), YEAR(CURRENT DATE - 1 YEAR), YEAR(CURRENT DATE - 2 YEARS))
例 5: 左側の ID と DEPT の両方が、 ORG 表の任意の行の MANAGER と DEPTNUMB にそれぞれ一致する場合、 以下は真として評価されます。
(ID, DEPT) IN (SELECT MANAGER, DEPTNUMB FROM ORG)