- 카테고리:
[ 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 은 하위 쿼리 연산자 로도 간주됩니다.
IN 을 사용하는 쿼리에서 배열 을 스프레드 연산자(
**
)를 사용하여 개별 값의 목록으로 확장할 수 있습니다. 자세한 정보와 예제는 확장 연산자 섹션을 참조하십시오.
데이터 정렬 세부 정보¶
Arguments with collation specifications currently aren’t supported.
예¶
다음 예제에서는 IN 함수를 사용합니다.
단순 리터럴과 함께 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 사용하기¶
이 예에서는 하위 쿼리에서 IN 을 사용하는 방법을 보여줍니다.
SELECT 'a' IN (
SELECT column1 FROM VALUES ('b'), ('c'), ('d')
) AS RESULT;
+--------+
| RESULT |
|--------|
| False |
+--------+
테이블과 함께 IN 사용하기¶
이들 예에서는 테이블과 함께 IN 을 사용하는 방법을 보여줍니다. 아래 문을 실행하면 예제에서 사용하는 테이블이 생성됩니다.
CREATE OR REPLACE TABLE in_function_demo (
col_1 INTEGER,
col_2 INTEGER,
col_3 INTEGER);
INSERT INTO in_function_demo (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 in_function_demo
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 in_function_demo
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 in_function_demo
) 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 |
+--------+