- カテゴリ:
[ NOT ] IN¶
引数が明示的リストのメンバーの1つであるか、サブクエリの結果であるかをテストします。
注釈
サブクエリ形式では、 IN は = ANY
と同等で、 NOT IN は <> ALL
と同等です。
構文¶
<value> [ NOT ] IN ( <value1> , <value2> , ... )
<value> [ NOT ] IN ( ( <value1> , <value2> , ... ) , ( <value3> , <value4> , ... ) )
<value> [ NOT ] IN ( <subquery> )
使用上の注意¶
ほとんどのコンテキストと同様に、 NULL は NULL と同等ではありません。<value> が NULLの場合、リストまたはサブクエリに NULLが含まれているかどうかにかかわらず、関数の戻り値は NULLです。
照合の詳細¶
Arguments with collation specifications are currently not supported.
例¶
次の例は、リテラルで IN
を使用する方法を示しています。
SELECT CASE WHEN 1 IN (1, 2, 3) THEN 'true' ELSE 'false' END AS RESULT; +--------+ | RESULT | |--------| | true | +--------+SELECT CASE WHEN 'a' NOT IN (SELECT column1 FROM VALUES ('b'), ('c'), ('d')) THEN 'true' ELSE 'false' END AS RESULT; +--------+ | RESULT | |--------| | true | +--------+
次の例は、テーブルで IN
を使用する方法を示しています。
CREATE TABLE MyTable (col_1 INTEGER, col_2 INTEGER, col_3 INTEGER); INSERT INTO MyTable (col_1, col_2, col_3) VALUES (1, 1, 1), (1, 2, 3), (4, 5, NULL);SELECT * FROM MYTABLE WHERE (col_1, col_2, col_3) IN ((1,2,3),(4,5,6)); +-------+-------+-------+ | COL_1 | COL_2 | COL_3 | |-------+-------+-------| | 1 | 2 | 3 | +-------+-------+-------+NULL != NULLです。以下は、 NULL がそれ自体と一致しないため、「(4、5、NULL)」がそれ自体と一致しないことを示しています。
SELECT * FROM MYTABLE WHERE (col_1, col_2, col_3) IN ((9, 8, 7), (4, 5, NULL)); +-------+-------+-------+ | COL_1 | COL_2 | COL_3 | |-------+-------+-------| +-------+-------+-------+
これは NOT IN
の簡単な使用例です。
SELECT * FROM MYTABLE WHERE (col_1, col_2, col_3) NOT IN ((1, 1, 1), (2, 2, 2)); +-------+-------+-------+ | COL_1 | COL_2 | COL_3 | |-------+-------+-------| | 1 | 2 | 3 | | 4 | 5 | NULL | +-------+-------+-------+