카테고리:

반정형 및 정형 데이터 함수 (배열/오브젝트)

ARRAY_CONTAINS

지정된 배열에서 지정된 값이 발견되면 TRUE를 반환합니다.

구문

ARRAY_CONTAINS( <value_expr> , <array> ) 
Copy

인자

value_expr

array 에서 찾을 값입니다.

array

검색할 배열입니다.

반환

이 함수는 BOOLEAN 타입 또는 NULL의 값을 반환합니다.

  • 이 함수는 arrayvalue_expr 이 있는 경우 TRUE 를 반환하며 다음과 같은 사례를 포함합니다.

    • value_expr 인자가 NULL 이고 배열(undefined)에 SQL NULL 값이 있는 경우.

    • value_expr 인자가 JSON null이고 배열(null)에 JSON null 값이 있는 경우.

  • arrayvalue_expr 이 없는 경우(value_expr 인자가 JSON null이고 배열에JSON null 값이 없는 경우 포함) 이 함수는 FALSE 를 반환합니다.

  • value_expr 인자가 NULL 이고 배열에 SQL NULL 값이 없는 경우 이 함수는 NULL 을 반환합니다.

배열의 NULL 값에 대한 자세한 내용은 NULL 값 섹션을 참조하십시오.

사용법 노트

  • 이 함수는 value_expr 에서 와일드카드를 지원하지 않습니다. 그러나 ARRAY_TO_STRING 함수를 사용하여 배열을 문자열로 변환한 다음 와일드카드 문자를 사용하여 문자열을 검색할 수 있습니다. 예를 들어, 와일드카드를 지정하여 [ NOT ] LIKEREGEXP_LIKE 함수를 사용하여 반환된 문자열을 검색할 수 있습니다.

  • array 가 반정형 배열인 경우, 다음 데이터 타입의 값에 대해 value_expr 값을 VARIANT 값으로 명시적으로 형변환 해야 합니다.

    다음 예는 문자열 값을 VARIANT 값으로 명시적으로 형변환합니다.

    SELECT ARRAY_CONTAINS('mystring2'::VARIANT, ARRAY_CONSTRUCT('mystring1', 'mystring2')); 
    Copy

    다른 데이터 타입의 값에는 명시적 형변환이 필요하지 않습니다.

다음 쿼리는 ARRAY_CONTAINS 함수를 SELECT 목록에서 사용합니다.

이 예제에서 이 함수는 value_expr 인자가 'hello' 이고 배열에 'hello' 문자열을 저장하는 VARIANT 값이 포함되어 있으므로 TRUE 를 반환합니다.

SELECT ARRAY_CONTAINS('hello'::VARIANT, ARRAY_CONSTRUCT('hello', 'hi')); 
Copy
+------------------------------------------------------------------+ | ARRAY_CONTAINS('HELLO'::VARIANT, ARRAY_CONSTRUCT('HELLO', 'HI')) | |------------------------------------------------------------------| | True | +------------------------------------------------------------------+ 

이 예제에서 이 함수는 value_expr 인자가 'hello' 이지만 배열에 'hello' 문자열을 저장하는 VARIANT 값이 포함되어 있지 않으므로 FALSE 를 반환합니다.

SELECT ARRAY_CONTAINS('hello'::VARIANT, ARRAY_CONSTRUCT('hola', 'bonjour')); 
Copy
+----------------------------------------------------------------------+ | ARRAY_CONTAINS('HELLO'::VARIANT, ARRAY_CONSTRUCT('HOLA', 'BONJOUR')) | |----------------------------------------------------------------------| | False | +----------------------------------------------------------------------+ 

이 예제에서 이 함수는 value_expr 인자가 NULL 이지만 배열에 SQL NULL 값이 포함되어 있지 않으므로 NULL 을 반환합니다.

SELECT ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('hola', 'bonjour')); 
Copy
+----------------------------------------------------------+ | ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('HOLA', 'BONJOUR')) | |----------------------------------------------------------| | NULL | +----------------------------------------------------------+ 

이 예제에서 이 함수는 value_expr 인자가 NULL 이고 배열에 SQL NULL 값이 포함되어 있으므로 TRUE 를 반환합니다.

SELECT ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('hola', NULL)); 
Copy
+-----------------------------------------------------+ | ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('HOLA', NULL)) | |-----------------------------------------------------| | True | +-----------------------------------------------------+ 

이 예제에서 이 함수는 value_expr 인자가 JSON null 값이고 배열에 JSON null 값이 포함되어 있으므로 TRUE 를 반환합니다.

SELECT ARRAY_CONTAINS(PARSE_JSON('null'), ARRAY_CONSTRUCT('hola', PARSE_JSON('null'))); 
Copy
+---------------------------------------------------------------------------------+ | ARRAY_CONTAINS(PARSE_JSON('NULL'), ARRAY_CONSTRUCT('HOLA', PARSE_JSON('NULL'))) | |---------------------------------------------------------------------------------| | True | +---------------------------------------------------------------------------------+ 

이 예제에서 이 함수는 value_expr 인자가 NULL 이지만 배열에 (JSON null 값은 포함되어 있지만) SQL NULL 값이 포함되어 있지 않으므로 NULL 을 반환합니다.

SELECT ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('hola', PARSE_JSON('null'))); 
Copy
+-------------------------------------------------------------------+ | ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('HOLA', PARSE_JSON('NULL'))) | |-------------------------------------------------------------------| | NULL | +-------------------------------------------------------------------+ 

다음 쿼리는 WHERE 절에서 ARRAY_CONTAINS 함수를 사용합니다. 먼저, ARRAY 열이 있는 테이블을 만들고 데이터를 삽입합니다.

CREATE OR REPLACE TABLE array_example (id INT, array_column ARRAY); INSERT INTO array_example (id, array_column) SELECT 1, ARRAY_CONSTRUCT(1, 2, 3); INSERT INTO array_example (id, array_column) SELECT 2, ARRAY_CONSTRUCT(4, 5, 6); SELECT * FROM array_example; 
Copy
+----+--------------+ | ID | ARRAY_COLUMN | |----+--------------| | 1 | [ | | | 1, | | | 2, | | | 3 | | | ] | | 2 | [ | | | 4, | | | 5, | | | 6 | | | ] | +----+--------------+ 

value_expr 에 대해 찾을 값과 array 에 대한 ARRAY 열을 지정하는 쿼리를 실행합니다.

SELECT * FROM array_example WHERE ARRAY_CONTAINS(5, array_column); 
Copy
+----+--------------+ | ID | ARRAY_COLUMN | |----+--------------| | 2 | [ | | | 4, | | | 5, | | | 6 | | | ] | +----+--------------+