- 카테고리:
반정형 및 정형 데이터 함수 (배열/오브젝트)
ARRAY_EXCEPT¶
다른 입력 ARRAY에 없는 한 입력 ARRAY의 요소를 포함하는 새 ARRAY 를 반환합니다.
이 함수는 NULL에 대해 안전합니다. 즉, NULL을 같음을 비교하기 위해 알려진 값으로 취급합니다.
- 참고 항목:
구문¶
ARRAY_EXCEPT( <source_array> , <array_of_elements_to_exclude> )
인자¶
source_array
새 ARRAY에 포함할 요소가 있는 배열입니다.
array_of_elements_to_exclude
새 ARRAY에서 제외할 요소가 있는 배열입니다.
반환¶
이 함수는 array_of_elements_to_exclude
에 없는 source_array
의 요소가 있는 ARRAY를 반환합니다.
source_array
에서 array_of_elements_to_exclude
에 있는 요소를 제외한 후 남은 요소가 없을 경우 이 함수는 빈 ARRAY를 반환합니다.
하나 또는 두 인자가 모두 NULL인 경우, 함수는 NULL을 반환합니다.
반환된 배열 내 값의 순서는 지정되지 않습니다.
사용법 노트¶
OBJECT 유형의 데이터를 비교할 때 오브젝트가 일치로 간주되려면 동일해야 합니다. 자세한 내용은 이 항목에 있는 예 를 참조하십시오.
Snowflake에서 배열은 세트가 아니라 다중 세트입니다. 다시 말해, 배열은 같은 값의 복사본을 여러 개 포함할 수 있습니다.
ARRAY_EXCEPT
는 다중 세트 의미 체계(“모음 의미 체계”라고도 함)를 사용하여 배열을 비교합니다.source_array
가 어떤 값의 복사본을 여러 개 포함하는 경우 이 함수는array_of_elements_to_exclude
에 지정된 해당 값의 복사본 수만 제거합니다.즉,
source_array
에 어떤 값의 복사본이 N개 있고array_of_elements_to_exclude
에 동일한 값의 복사본이 M개 있는 경우 이 함수는 반환된 배열에서 해당 값의 복사본 M개를 제외합니다. 반환된 배열에 있는 값의 복사본 수는 N - M개이거나, M이 N보다 크면 0개입니다.예를 들어
source_array
에 값이'A'
인 요소가 5개 있고array_of_elements_to_exclude
에 값이'A'
인 요소가 2개 있는 경우 반환된 배열에는 값이'A'
인 요소가 3개 있습니다.
정형 ARRAY를 전달하는 경우:
두 번째 인자의 ARRAY는 첫 번째 인자의 ARRAY와 비교 가능 해야 합니다.
이 함수는 첫 번째 인자의 ARRAY와 동일한 유형의 정형 ARRAY를 반환합니다.
예¶
이 섹션의 예제에서는 ARRAY 상수 와 OBJECT 상수 를 사용하여 ARRAY와 OBJECT를 지정합니다.
다음 예제에서는 이 함수의 사용 방법을 보여줍니다.
SELECT ARRAY_EXCEPT(['A', 'B'], ['B', 'C']);
+--------------------------------------+
| ARRAY_EXCEPT(['A', 'B'], ['B', 'C']) |
|--------------------------------------|
| [ |
| "A" |
| ] |
+--------------------------------------+
다음 예제에서는 요소 'C'
를 source_array
에 추가합니다. 반환된 ARRAY는 'C'
가 array_of_elements_to_exclude
에도 지정되어 있으므로 'C'
를 제외합니다.
SELECT ARRAY_EXCEPT(['A', 'B', 'C'], ['B', 'C']);
+-------------------------------------------+
| ARRAY_EXCEPT(['A', 'B', 'C'], ['B', 'C']) |
|-------------------------------------------|
| [ |
| "A" |
| ] |
+-------------------------------------------+
다음 예제에서 source_array
는 값이 'B'
인 요소를 3개 포함합니다. array_of_elements_to_exclude
는 'B'
요소를 1개만 포함하므로, 이 함수는 'B'
요소를 1개만 제외하고 다른 'B'
요소를 2개 포함하는 ARRAY를 반환합니다.
SELECT ARRAY_EXCEPT(['A', 'B', 'B', 'B', 'C'], ['B']);
+------------------------------------------------+
| ARRAY_EXCEPT(['A', 'B', 'B', 'B', 'C'], ['B']) |
|------------------------------------------------|
| [ |
| "A", |
| "B", |
| "B", |
| "C" |
| ] |
+------------------------------------------------+
다음 예제에서는 source_array
에서 array_of_elements_to_exclude
의 요소를 제외한 후 남는 요소가 없습니다. 결국, 이 함수는 빈 ARRAY를 반환합니다.
SELECT ARRAY_EXCEPT(['A', 'B'], ['A', 'B']);
+--------------------------------------+
| ARRAY_EXCEPT(['A', 'B'], ['A', 'B']) |
|--------------------------------------|
| [] |
+--------------------------------------+
다음 예제에서는 이 함수가 NULL 요소를 알려진 값으로 처리하는 방법을 보여줍니다. 앞서 설명한 것처럼, source_array
는 array_of_elements_to_exclude
보다 NULL 요소를 하나 더 포함하므로 반환된 ARRAY는 NULL 요소를 하나만 제외하고 (undefined
로 인쇄되는) 다른 요소는 포함합니다.
SELECT ARRAY_EXCEPT(['A', NULL, NULL], ['B', NULL]);
+----------------------------------------------+
| ARRAY_EXCEPT(['A', NULL, NULL], ['B', NULL]) |
|----------------------------------------------|
| [ |
| "A", |
| undefined |
| ] |
+----------------------------------------------+
다음 예제에서 source_array
와 array_of_elements_to_exclude
는 같은 수의 NULL 요소를 포함하므로, 반환되는 ARRAY에 NULL 요소는 제외됩니다.
SELECT ARRAY_EXCEPT(['A', NULL, NULL], [NULL, 'B', NULL]);
+----------------------------------------------------+
| ARRAY_EXCEPT(['A', NULL, NULL], [NULL, 'B', NULL]) |
|----------------------------------------------------|
| [ |
| "A" |
| ] |
+----------------------------------------------------+
다음 예제에서는 source_array
와 array_of_elements_to_exclude
에서 같은 오브젝트를 지정하여 반환되는 ARRAY에서 해당 오브젝트를 제외하는 방법을 보여줍니다.
SELECT ARRAY_EXCEPT([{'a': 1, 'b': 2}, 1], [{'a': 1, 'b': 2}, 3]);
+------------------------------------------------------------+
| ARRAY_EXCEPT([{'A': 1, 'B': 2}, 1], [{'A': 1, 'B': 2}, 3]) |
|------------------------------------------------------------|
| [ |
| 1 |
| ] |
+------------------------------------------------------------+
다음 예제에서는 NULL을 전달하면 함수에서 NULL을 반환하는 것을 보여줍니다.
SELECT ARRAY_EXCEPT(['A', 'B'], NULL);
+--------------------------------+
| ARRAY_EXCEPT(['A', 'B'], NULL) |
|--------------------------------|
| NULL |
+--------------------------------+