REGEXP_SUBSTR 함수 - Amazon Redshift

REGEXP_SUBSTR 함수

문자열에서 정규 표현식 패턴을 검색하여 문자를 반환합니다. REGEXP_SUBSTR은 SUBSTRING 함수 함수와 비슷하지만 문자열에서 정규 표현식 패턴을 검색할 수 있습니다. 함수에서 정규 표현식이 문자열의 어떤 문자와도 일치하지 않는 경우 빈 문자열이 반환됩니다. 정규 표현식에 관한 자세한 내용은 POSIX 연산자 단원 및 Wikipedia의 정규 표현식을 참조하세요.

구문

REGEXP_SUBSTR( source_string, pattern [, position [, occurrence [, parameters ] ] ] )

인수

source_string

검색할 문자열 표현식입니다.

패턴

정규 표현식 패턴을 나타내는 UTF-8 문자열 리터럴입니다. 자세한 내용은 POSIX 연산자 단원을 참조하십시오.

position

source_string 내에서 검색을 시작할 위치를 나타내는 양의 정수입니다. 이 위치는 바이트가 아닌 문자 수를 기준으로 하기 때문에 멀티바이트 문자도 단일 문자로 계산됩니다. 기본 값은 1입니다. position이 1보다 작으면 검색이 source_string의 첫 문자부터 시작됩니다. positionsource_string의 문자 수보다 크면 결과는 빈 문자열("")이 됩니다.

발생

사용할 패턴 발생을 나타내는 양의 정수입니다. REGEXP_SUBSTR은 첫 번째 발생에서 1을 뺀 개수의 일치하는 항목을 건너뜁니다. 기본 값은 1입니다. 발생이 1보다 작거나 source_string에 있는 문자 수보다 클 경우 검색이 무시되고 결과가 NULL이 됩니다.

파라미터

함수가 패턴과 일치하는 방법을 나타내는 하나 이상의 문자열 리터럴입니다. 가능한 값은 다음과 같습니다.

  • c - 대/소문자를 구분하여 일치시킵니다. 기본값은 대/소문자 구분 일치를 사용하는 것입니다.

  • i - 대/소문자를 구분하지 않고 일치시킵니다.

  • e - 하위 표현식을 사용하여 하위 문자열을 추출합니다.

    패턴에 하위 표현식이 포함되어 있을 경우 REGEXP_SUBSTR은 패턴의 첫 번째 하위 표현식을 사용하여 하위 문자열과 일치시킵니다. 하위 표현식은 괄호로 묶인 패턴 내 표현식입니다. 예를 들어 'This is a (\\w+)' 패턴은 첫 번째 표현식과 뒤에 단어가 오는 'This is a ' 문자열을 일치시킵니다. e 매개 변수가 있는 REGEXP_SUBSTR은 패턴을 반환하는 대신 하위 표현식 내의 문자열만 반환합니다.

    REGEXP_SUBSTR은 첫 번째 하위 표현식만 고려하며 추가 하위 표현식은 무시됩니다. 패턴에 하위 표현식이 없으면 REGEXP_SUBSTR이 'e' 파라미터를 무시합니다.

  • p – PCRE(Perl Compatible Regular Expression) 방언으로 패턴을 해석합니다. PCRE에 관한 자세한 내용은 Wikipedia의 펄 호환 정규 표현식을 참조하세요.

반환 타입

VARCHAR

예시

다음은 @ 문자와 도메인 확장자 사이의 이메일 주소 구간을 반환하는 예입니다. 쿼리된 users 데이터는 Amazon Redshift 샘플 데이터에서 가져온 것입니다. 자세한 내용은 샘플 데이터베이스 단원을 참조하십시오.

SELECT email, regexp_substr(email,'@[^.]*') FROM users ORDER BY userid LIMIT 4; email | regexp_substr -----------------------------------------------+-------------------------- Suspendisse.tristique@nonnisiAenean.edu | @nonnisiAenean amet.faucibus.ut@condimentumegetvolutpat.ca | @condimentumegetvolutpat sed@lacusUtnec.ca | @lacusUtnec Cum@accumsan.com | @accumsan

다음 예에서는 대/소문자를 구분하지 않는 일치를 사용하여 문자열 FOX의 첫 번째 발생에 해당하는 입력 부분을 반환합니다.

SELECT regexp_substr('the fox', 'FOX', 1, 1, 'i'); regexp_substr --------------- fox

다음 예에서는 대/소문자를 구분하지 않는 일치를 사용하여 문자열 FOX의 두 번째 발생에 해당하는 입력 부분을 반환합니다. 두 번째 항목이 없기 때문에 결과값은 NULL(비어 있음)입니다.

SELECT regexp_substr('the fox', 'FOX', 1, 2, 'i'); regexp_substr ---------------

다음 예제에서는 소문자로 시작하는 입력의 첫 번째 부분을 반환합니다. 이는 c 파라미터가 없는 동일한 SELECT 문과 기능적으로 동일합니다.

SELECT regexp_substr('THE SECRET CODE IS THE LOWERCASE PART OF 1931abc0EZ.', '[a-z]+', 1, 1, 'c'); regexp_substr --------------- abc

다음 예에서는 PCRE 방언으로 작성된 패턴을 사용하여 하나 이상의 숫자와 하나의 소문자가 포함된 단어를 찾습니다. PCRE에서 특정 미리 보기 의미가 있는 ?= 연산자가 사용됩니다. 이 예에서는 두 번째 단어에 해당하는 입력 부분을 반환합니다.

SELECT regexp_substr('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 'p'); regexp_substr --------------- a1234

다음 예에서는 PCRE 방언으로 작성된 패턴을 사용하여 하나 이상의 숫자와 하나의 소문자가 포함된 단어를 찾습니다. PCRE에서 특정 미리 보기 의미가 있는 ?= 연산자가 사용됩니다. 이 예는 두 번째 단어에 해당하는 입력 부분을 반환하지만 대/소문자를 구분하지 않는 일치를 사용한다는 점에서 이전 예와 다릅니다.

SELECT regexp_substr('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 'ip'); regexp_substr --------------- A1234

다음 예에서는 하위 표현식을 사용하여 'this is a (\\w+)' 패턴과 일치하는 두 번째 문자열을 찾습니다. 괄호를 친 하위 표현식을 반환합니다.

SELECT regexp_substr( 'This is a cat, this is a dog. This is a mouse.', 'this is a (\\w+)', 1, 2, 'ie'); regexp_substr --------------- dog