- 카테고리:
[ NOT ] IN¶
해당 인자가 명시적 목록의 멤버 또는 하위 쿼리의 결과 중 하나인지 여부를 테스트합니다.
참고
하위 쿼리 형식에서 IN은 = ANY
와 동일하고 NOT IN은 <> ALL
과 동일합니다.
팁
검색 최적화 서비스를 사용하여 이 함수를 호출하는 쿼리의 성능을 향상할 수 있습니다. 자세한 내용은 검색 최적화 서비스 섹션을 참조하십시오.
구문¶
개별 값을 비교하려면:
<value> [ NOT ] IN ( <value_1> [ , <value_2> ... ] )
행 생성자 (괄호로 묶인 값 목록)를 비교하려면:
( <value_A> [, <value_B> ... ] ) [ NOT ] IN ( ( <value_1> [ , <value_2> ... ] ) [ , ( <value_3> [ , <value_4> ... ] ) ... ] )
값을 하위 쿼리에서 반환된 값과 비교하려면:
<value> [ NOT ] IN ( <subquery> )
매개 변수¶
value
검색할 값입니다.
value_A
,value_B
검색할 행 생성자의 요소입니다.
IN
의 오른쪽에 있는 각각의 값(예:(value3, value4)
)이IN
의 왼쪽에 있는 값(예:(value_A, value_B)
)과 같은 수의 요소를 갖도록 합니다.value_#
value
와 비교해야 하는 값입니다.비교할 값이 행 생성자인 경우 각
value_#
는 행 생성자의 개별 요소입니다.subquery
value
와 비교할 수 있는 값의 목록을 반환하는 하위 쿼리입니다.
사용법 노트¶
대부분의 컨텍스트에서 NULL은 NULL과 같지 않습니다.
value
가 NULL인 경우, 목록 또는 하위 쿼리에 NULL이 포함되어 있는지 여부와 관계없이 함수의 반환 값은 NULL입니다.예를 들어, 다음은 TRUE가 아닌 NULL을 반환합니다.
SELECT NULL IN (1, 2, NULL) AS RESULT;
구문적으로,
IN
은 함수가 아닌 연산자로 처리됩니다. 아래 예에서는IN
을 연산자로 사용하는 것과f()
를 함수로 호출하는 것의 차이점을 보여줍니다.SELECT f(a, b), x IN (y, z) ...
IN
을 포함한 함수 구문은 사용할 수 없습니다. 예를 들어, 앞의 예를 다음과 같이 다시 작성할 수 없습니다.SELECT f(a, b), IN(x, (y, z)) ...
IN
은 하위 쿼리 연산자 로도 간주됩니다.
데이터 정렬 세부 정보¶
Arguments with collation specifications are currently not supported.
예¶
단순 리터럴과 함께 IN
사용하기¶
다음 예는 단순 리터럴과 함께 IN
과 NOT IN
을 사용하는 방법을 보여줍니다.
SELECT 1 IN (1, 2, 3) AS RESULT; +--------+ | RESULT | |--------| | True | +--------+SELECT 4 NOT IN (1, 2, 3) AS RESULT; +--------+ | RESULT | |--------| | True | +--------+
하위 쿼리와 함께 IN
사용하기¶
SELECT 'a' IN ( SELECT column1 FROM VALUES ('b'), ('c'), ('d') ) AS RESULT; +--------+ | RESULT | |--------| | False | +--------+
테이블과 함께 IN
사용하기¶
이들 예에서는 테이블과 함께 IN
을 사용하는 방법을 보여줍니다. 아래 문을 실행하면 예제에서 사용하는 테이블이 생성됩니다.
CREATE TABLE my_table (col_1 INTEGER, col_2 INTEGER, col_3 INTEGER); INSERT INTO my_table (col_1, col_2, col_3) VALUES (1, 1, 1), (1, 2, 3), (4, 5, NULL);
이 예에서는 테이블의 단일 열과 함께 IN
을 사용하는 방법을 보여줍니다.
SELECT col_1, col_2, col_3 FROM my_table WHERE (col_1) IN (1, 10, 100, 1000) ORDER BY col_1, col_2, col_3; +-------+-------+-------+ | COL_1 | COL_2 | COL_3 | |-------+-------+-------| | 1 | 1 | 1 | | 1 | 2 | 3 | +-------+-------+-------+
이 예에서는 테이블의 여러 열과 함께 IN
을 사용하는 방법을 보여줍니다.
SELECT col_1, col_2, col_3 FROM my_table WHERE (col_1, col_2, col_3) IN ( (1,2,3), (4,5,6) ); +-------+-------+-------+ | COL_1 | COL_2 | COL_3 | |-------+-------+-------| | 1 | 2 | 3 | +-------+-------+-------+
이 예에서는 테이블의 여러 열을 읽는 하위 쿼리와 함께 IN
을 사용하는 방법을 보여줍니다.
SELECT (1, 2, 3) IN ( SELECT col_1, col_2, col_3 FROM my_table ) AS RESULT; +--------+ | RESULT | |--------| | True | +--------+
NULL 사용하기¶
NULL != NULL임을 기억하십시오. IN
의 왼쪽 또는 오른쪽에 있는 값에 NULL이 포함된 경우 다음 쿼리 중 어느 것도 일치 항목을 반환하지 않습니다.
SELECT NULL IN (1, 2, NULL) AS RESULT; +--------+ | RESULT | |--------| | NULL | +--------+SELECT (4, 5, NULL) IN ( (4, 5, NULL), (7, 8, 9) ) AS RESULT; +--------+ | RESULT | |--------| | NULL | +--------+