- 카테고리:
REGEXP_INSTR¶
문자열 주제에서 정규식 패턴의 지정된 발생 위치를 반환합니다.
문자열 함수(정규식) 도 참조하십시오.
구문¶
인자¶
필수:
subject일치 항목을 검색할 문자열입니다.
pattern일치할 패턴입니다.
패턴 지정에 관한 지침은 문자열 함수(정규식) 섹션을 참조하십시오.
선택 사항:
position함수가 일치 항목 검색을 시작하는 문자열 시작 부분의 문자 수입니다. 값은 양의 정수여야 합니다.
기본값:
1(일치 항목 검색은 왼쪽의 첫 번째 문자에서 시작됨)occurrence일치 항목을 반환하기 시작할 첫 번째 패턴 항목을 지정합니다.
함수는 첫
occurrence - 1개의 일치 항목을 건너뜁니다. 예를 들어 5개의 일치 항목이 있고occurrence인자에 대해3을 지정할 경우 이 함수는 처음 두 일치 항목은 무시하고 세 번째, 네 번째, 다섯 번째 일치 항목을 반환합니다.기본값:
1option일치 항목의 첫 번째 문자의 오프셋을 반환할지(
0), 아니면 일치 항목의 끝 다음에 오는 첫 번째 문자의 오프셋을 반환할지(1) 지정합니다.기본값:
0regexp_parameters일치 항목을 검색하는 데 사용되는 매개 변수를 지정하는 하나 이상의 문자로 된 문자열입니다. 지원되는 값:
매개 변수
설명
c대/소문자를 구분하는 일치
i대/소문자를 구분하지 않는 일치
m여러 줄 모드
e하위 일치 항목 추출
s한 줄 모드 POSIX 와일드카드 문자
.는\n과 일치합니다.기본값:
c자세한 내용은 정규식에 매개 변수 지정하기 섹션을 참조하십시오.
참고
기본적으로, REGEXP_INSTR은 주제의 전체 일치 부분에 대한 시작 또는 끝 문자 오프셋을 반환합니다. 그러나
e(“추출”의 경우) 매개 변수가 지정되면 REGEXP_INSTR은 패턴의 첫 번째 하위 식과 일치하는 주제 부분의 시작 또는 끝 문자 오프셋을 반환합니다.e가 지정되었지만group_num도 지정되지 않은 경우,group_num의 기본값은 1(첫 번째 그룹)입니다. 패턴에 하위 식이 없으면 REGEXP_INSTR은e가 설정되지 않은 것처럼 작동합니다.e를 사용하는 예는 이 항목의 예 를 참조하십시오.group_numgroup_num매개 변수는 추출할 그룹을 지정합니다. 그룹은 정규식에서 괄호를 사용하여 지정됩니다.group_num이 지정되면 Snowflake는 추출을 허용합니다.e옵션도 지정하지 않은 경우에도 마찬가지입니다.e옵션은 내포되어 있습니다.Snowflake는 최대 1024개의 그룹을 지원합니다.
group_num을 사용하는 예는 이 항목의 캡처 그룹의 예 섹션을 참조하십시오.
반환¶
NUMBER 형식의 값을 반환합니다.
일치하는 항목이 없으면 0 을 반환합니다.
사용법 노트¶
위치는 0이 아니라 1부터 시작합니다. 예를 들어, “MAN”에서 문자 “M”의 위치는 0이 아니라 1입니다.
추가적인 사용법 노트는 정규식 함수에 대한 일반적인 사용법 노트 을 참조하십시오.
데이터 정렬 세부 정보¶
Arguments with collation specifications currently aren’t supported.
예¶
다음 예제에서는 REGEXP_INSTR 함수를 사용합니다.
기본 예제¶
테이블을 만들고 데이터를 삽입합니다.
일치하는 문자열을 검색합니다. 이 경우, 문자열은 nevermore 뒤에 단일 10진수가 옵니다(예: nevermore1). 이 예에서는 REGEXP_SUBSTR 함수를 사용하여 일치하는 하위 문자열을 표시합니다.
일치하는 문자열을 검색하되, 문자열의 첫 번째 문자가 아니라 다음과 같이 문자열의 다섯 번째 문자에서 시작합니다.
일치하는 문자열을 검색하되, 첫 번째 일치 항목이 아니라 다음과 같이 세 번째 일치 항목을 찾습니다.
이 쿼리는 이전 쿼리와 거의 동일하지만, 일치하는 식의 위치를 원하는지, 아니면 일치하는 식 뒤의 첫 번째 문자의 위치를 원하는지를 option 인자를 사용하여 표시하는 방법을 보여줍니다.
이 쿼리는 마지막 실제 발생 이후의 항목을 검색하는 경우 반환된 위치가 0임을 보여줍니다.
캡처 그룹의 예¶
이 섹션에서는 정규식의 “그룹” 기능을 사용하는 방법을 보여줍니다.
이 섹션의 처음 몇 가지 예에서는 캡처 그룹을 사용하지 않습니다. 이 섹션은 몇 가지 간단한 예로 시작한 다음, 캡처 그룹을 사용하는 예로 계속됩니다.
이 예에서는 아래에 만들어진 문자열을 사용합니다.
문자열은 다음과 같은 특징이 있습니다.
id가2인 문자열에는 “the”라는 단어가 여러 번 나옵니다.id가3인 문자열에는 “the”라는 단어가 여러 번 나오고 단어 사이에 공백이 추가로 있습니다.id가4인 문자열에는 여러 단어(“thespian”과 “theater”) 내에 문자 시퀀스 “the”가 있지만, 그 자체로 “the”라는 단어는 없습니다.
이 예에서는 단어 the 가 처음 나오고, 그 뒤에 하나 이상의 비단어 문자(예: 단어를 구분하는 공백), 그 뒤에 하나 이상의 단어 문자가 나오는 곳을 찾습니다.
“단어 문자”에는 문자 a-z 및 A-Z뿐만 아니라 밑줄(“_”) 및 10진수 0-9가 포함되지만 공백, 구두점 등은 포함되지 않습니다.
문자열의 위치 1에서 시작하여 단어 the 가 두 번째로 나오고, 그 뒤에 하나 이상의 비단어 문자, 그 뒤에 하나 이상의 단어 문자가 나오는 곳을 찾습니다.
이 예는 앞의 예와 유사하지만, 캡처 그룹을 추가합니다. 전체 일치의 위치를 반환하는 대신, 이 쿼리는 그룹 의 위치(괄호 안의 정규식 부분과 일치하는 하위 문자열 부분)만 반환합니다. 이 경우, 반환된 값은 단어 the 가 두 번째로 나오는 부분 뒤에 있는 단어의 위치입니다.
다음과 같이 'e' (추출) 매개 변수를 지정하고 group_num 을 지정하지 않으면 group_num 의 기본값은 1 입니다.
다음과 같이 group_num 을 지정하면 Snowflake는 사용자가 추출을 원한다고 가정합니다. 'e' (추출)를 매개 변수 중 하나로 지정하지 않은 경우에도 마찬가지입니다.
이 예는 첫 번째 단어가 A 인, 두 단어로 된 패턴의 첫 번째, 두 번째, 세 번째 일치 항목에서 두 번째 단어의 위치를 검색하는 방법을 보여줍니다. 이는 마지막 패턴을 넘어서려고 하면 Snowflake가 0을 반환한다는 것도 보여줍니다.
테이블을 만들고 데이터를 삽입합니다.
쿼리를 실행합니다.
이 예는 패턴의 첫 번째 발생 내에서 첫 번째, 두 번째, 세 번째 그룹의 위치를 검색하는 방법을 보여줍니다. 이 경우, 반환된 값은 MAN 단어의 개별 문자의 위치입니다.
추가 예제¶
다음 예는 was 단어의 발생과 일치합니다. 일치는 문자열의 첫 번째 문자에서 시작하며, 문자열에서 첫 번째 발생 다음에 오는 문자의 위치를 반환합니다.
다음 예에서는 패턴과 일치하는 문자열 부분의 첫 번째 문자 오프셋을 반환합니다. 일치는 문자열의 첫 번째 문자에서 시작하며, 패턴의 첫 번째 발생을 반환합니다.
다음 예는 이전 예와 동일하지만, e 매개 변수를 사용하여, 패턴의 첫 번째 하위 식과 일치하는 주제 부분(the 다음의 첫 번째 단어 문자 세트)에 대한 문자 오프셋을 반환합니다.
다음 예는 2개 이상의 알파벳 문자(대/소문자 구분 안 함)가 앞에 오는, st 로 끝나는 단어를 찾습니다. 일치는 문자열의 15번째 문자에서 시작하며, 문자열에서 첫 번째 발생(worst 의 시작) 다음에 오는 문자의 위치를 반환합니다.
다음 예제 세트를 실행하려면 테이블을 만들고 데이터를 삽입하십시오.
다음과 같이 소문자 o 를 포함하는 첫 번째 일치 항목에서 첫 번째 문자의 오프셋을 반환합니다.
다음과 같이 제목의 세 번째 문자부터 시작해 소문자 o 를 포함하는 첫 번째 일치 항목에서 첫 번째 문자의 오프셋을 반환합니다.
다음과 같이 제목의 세 번째 문자부터 시작해 소문자 o 를 포함하는 세 번째 일치 항목에서 첫 번째 문자의 오프셋을 반환합니다.
다음과 같이 제목의 세 번째 문자부터 시작해 소문자 o 를 포함하는 세 번째 일치 항목에서 마지막 문자의 오프셋을 반환합니다.
다음과 같이 대/소문자를 구분하지 않고 제목의 세 번째 문자부터 시작해 소문자 o 를 포함하는 세 번째 일치 항목에서 마지막 문자의 오프셋을 반환합니다.