- 카테고리:
REGEXP_SUBSTR_ALL¶
문자열 내의 정규식과 일치하는 모든 하위 문자열을 포함하는 ARRAY 를 반환합니다.
- 별칭:
REGEXP_EXTRACT_ALL
문자열 함수(정규식) 항목도 참조하십시오.
구문¶
REGEXP_SUBSTR_ALL( <subject> , <pattern> [ , <position> [ , <occurrence> [ , <regex_parameters> [ , <group_num> ] ] ] ] )
인자¶
필수:
subject
일치 항목을 검색할 문자열입니다.
pattern
일치할 패턴입니다.
패턴 지정에 관한 지침은 문자열 함수(정규식) 섹션을 참조하십시오.
선택 사항:
position
함수가 일치 항목 검색을 시작하는 문자열 시작 부분의 문자 수입니다.
기본값:
1
(일치 항목 검색은 왼쪽의 첫 번째 문자에서 시작됨)occurrence
일치 항목을 반환하기 시작할 첫 번째 패턴 항목을 지정합니다.
함수는 첫
occurrence - 1
개의 일치 항목을 건너뜁니다. 예를 들어 5개의 일치 항목이 있고occurrence
인자에 대해3
을 지정할 경우 이 함수는 처음 두 일치 항목은 무시하고 세 번째, 네 번째, 다섯 번째 일치 항목을 반환합니다.기본값:
1
regex_parameters
일치 항목을 검색하는 데 사용되는 매개 변수를 지정하는 하나 이상의 문자로 된 문자열입니다. 지원되는 값:
매개 변수
설명
c
대/소문자를 구분하는 일치
i
대/소문자를 구분하지 않는 일치
m
여러 줄 모드
e
하위 일치 항목 추출
s
POSIX 와일드카드 문자
.
는 `` `` 과 일치합니다.기본값:
c
자세한 내용은 정규식에 매개 변수 지정하기 섹션을 참조하십시오.
참고
기본적으로 REGEXP_SUBSTR_ALL은 주제에서 일치하는 전체 부분을 반환합니다. 그러나
e
매개 변수가 지정되면 REGEXP_SUBSTR_ALL은 패턴의 첫 번째 그룹과 일치하는 주제 부분을 반환합니다.e
가 지정되었지만group_num
도 지정되지 않은 경우,group_num
의 기본값은 1(첫 번째 그룹)입니다. 패턴에 하위 식이 없으면 REGEXP_SUBSTR_ALL은e
가 설정되지 않은 것처럼 작동합니다.e
를 사용하는 예는 이 항목의 예 를 참조하십시오.group_num
추출할 그룹을 지정합니다. 그룹은 정규식에서 괄호를 사용하여 지정됩니다.
group_num
가 지정되면 Snowflake는 추출을 허용합니다.'e'
옵션도 지정하지 않은 경우에도 마찬가지입니다.'e'
는 내포되어 있습니다.Snowflake는 최대 1024개의 그룹을 지원합니다.
group_num
를 사용하는 예는 이 항목의 예 를 참조하십시오.
반환¶
함수는 ARRAY 형식의 값을 반환합니다. 배열은 일치하는 각 부분 문자열의 요소를 포함합니다.
일치하는 항목이 없을 경우 이 함수는 빈 배열을 반환합니다.
다음의 경우 함수는 NULL을 반환합니다.
NULL인 인지가 있는 경우.
group_num
을 지정하는데 패턴이 해당 번호로 그룹화를 지정하지 않습니다. 예를 들어 패턴이 하나의 그룹(예:a(b)c
)만 지정하고 사용자가2
를group_num
으로 사용할 경우, 이 함수는 NULL을 반환합니다.
사용법 노트¶
정규식 사용에 대한 추가 정보는 문자열 함수(정규식) 섹션을 참조하십시오.
데이터 정렬 세부 정보¶
Arguments with collation specifications are currently not supported.
예¶
다음 예의 패턴은 소문자 “a” 다음에 숫자가 오는 패턴과 일치합니다. 이 예에서는 모든 일치 항목을 포함한 ARRAY를 반환합니다.
SELECT REGEXP_SUBSTR_ALL('a1_a2a3_a4A5a6', 'a[[:digit:]]') AS matches;
+---------+
| MATCHES |
|---------|
| [ |
| "a1", |
| "a2", |
| "a3", |
| "a4", |
| "a6" |
| ] |
+---------+
다음 예에서는 문자열의 두 번째 문자(2
)에서 일치 항목 찾기를 시작합니다.
SELECT REGEXP_SUBSTR_ALL('a1_a2a3_a4A5a6', 'a[[:digit:]]', 2) AS matches;
+---------+
| MATCHES |
|---------|
| [ |
| "a2", |
| "a3", |
| "a4", |
| "a6" |
| ] |
+---------+
다음 예에서는 문자열에서 세 번째 패턴 발생 항목(3
)에서 일치 항목을 반환하기 시작합니다.
SELECT REGEXP_SUBSTR_ALL('a1_a2a3_a4A5a6', 'a[[:digit:]]', 1, 3) AS matches;
+---------+
| MATCHES |
|---------|
| [ |
| "a3", |
| "a4", |
| "a6" |
| ] |
+---------+
다음 예에서는 대/소문자를 구분하지 않는 일치 항목 찾기(i
)를 수행합니다.
SELECT REGEXP_SUBSTR_ALL('a1_a2a3_a4A5a6', 'a[[:digit:]]', 1, 1, 'i') AS matches;
+---------+
| MATCHES |
|---------|
| [ |
| "a1", |
| "a2", |
| "a3", |
| "a4", |
| "A5", |
| "a6" |
| ] |
+---------+
다음 예에서는 대/소문자를 구분하지 않는 일치 항목 찾기를 수행하고 첫 번째 그룹(ie
)과 일치하는 문자열 부분을 반환합니다.
SELECT REGEXP_SUBSTR_ALL('a1_a2a3_a4A5a6', '(a)([[:digit:]])', 1, 1, 'ie') AS matches;
+---------+
| MATCHES |
|---------|
| [ |
| "a", |
| "a", |
| "a", |
| "a", |
| "A", |
| "a" |
| ] |
+---------+
다음 예에서는 일치하는 항목을 찾을 수 없을 때 이 함수가 빈 배열을 반환함을 보여줍니다.
SELECT REGEXP_SUBSTR_ALL('a1_a2a3_a4A5a6', 'b') AS matches;
+---------+
| MATCHES |
|---------|
| [] |
+---------+
이 예는 첫 번째 단어가 A
인, 두 단어로 된 패턴의 첫 번째, 두 번째, 세 번째 일치 항목에 있는 문자열에서 각각 두 번째 단어를 검색하는 방법을 보여줍니다.
먼저 테이블을 만들고 데이터를 삽입합니다.
CREATE OR REPLACE TABLE test_regexp_substr_all (string1 VARCHAR);;
INSERT INTO test_regexp_substr_all (string1) VALUES ('A MAN A PLAN A CANAL');
쿼리를 실행합니다.
SELECT REGEXP_SUBSTR_ALL(string1, 'A\\W+(\\w+)', 1, 1, 'e', 1) AS result1,
REGEXP_SUBSTR_ALL(string1, 'A\\W+(\\w+)', 1, 2, 'e', 1) AS result2,
REGEXP_SUBSTR_ALL(string1, 'A\\W+(\\w+)', 1, 3, 'e', 1) AS result3
FROM test_regexp_substr_all;
+-----------+-----------+-----------+
| RESULT1 | RESULT2 | RESULT3 |
|-----------+-----------+-----------|
| [ | [ | [ |
| "MAN", | "PLAN", | "CANAL" |
| "PLAN", | "CANAL" | ] |
| "CANAL" | ] | |
| ] | | |
+-----------+-----------+-----------+
이 예는 문자열에서 패턴의 각 발생 내에서 첫 번째, 두 번째, 세 번째 그룹을 검색하는 방법을 보여줍니다. 이 경우, 반환된 값은 각 그룹에서 일치하는 각 단어에 포함된 각각의 개별 문자입니다.
SELECT REGEXP_SUBSTR_ALL(string1, 'A\\W+(\\w)(\\w)(\\w)', 1, 1, 'e', 1) AS result1,
REGEXP_SUBSTR_ALL(string1, 'A\\W+(\\w)(\\w)(\\w)', 1, 1, 'e', 2) AS result2,
REGEXP_SUBSTR_ALL(string1, 'A\\W+(\\w)(\\w)(\\w)', 1, 1, 'e', 3) AS result3
FROM test_regexp_substr_all;
+---------+---------+---------+
| RESULT1 | RESULT2 | RESULT3 |
|---------+---------+---------|
| [ | [ | [ |
| "M", | "A", | "N", |
| "P", | "L", | "A", |
| "C" | "A" | "N" |
| ] | ] | ] |
+---------+---------+---------+