REGEXP_SUBSTR 스칼라 함수
REGEXP_SUBSTR 스칼라 함수는 정규식 패턴과 일치하는 문자열의 서브스트링에 대한 하나의 어커런스를 리턴합니다.
스키마는 SYSIBM입니다.
- 소스 문자열
- 검색이 발생할 문자열을 지정하는 표현식입니다. 이 표현식은 내장 문자열, 그래픽 문자열, 숫자 값, 부울 값 또는 날짜 시간 값을 리턴해야 합니다. 숫자, 부울 또는 날짜 시간 값은 함수가 평가되기 전에 내재적으로 VARCHAR로 캐스트됩니다. 문자열은 FOR BIT DATA 속성을 지정할 수 없습니다(SQLSTATE 42815).
- 패턴 표현식
- 검색의 패턴인 정규식 문자열을 지정하는 표현식입니다. 이 표현식은 내장 문자열, 그래픽 문자열, 숫자 값, 부울 값 또는 날짜 시간 값을 리턴해야 합니다. 숫자, 부울 또는 날짜 시간 값은 함수가 평가되기 전에 내재적으로 VARCHAR로 캐스트됩니다. CLOB 또는 DBCLOB 표현식의 길이는 VARCHAR 또는 VARGRAPHIC 데이터 유형의 최대 길이보다 크지 않아야 합니다. 문자열은 FOR BIT DATA 속성을 지정할 수 없습니다(SQLSTATE 42815).
- start
- 검색이 시작될 source-string 내 위치를 지정하는 표현식. 표현식은 내장 문자열, 그래픽 문자열, 부울 또는 숫자 값을 리턴해야 합니다. 값이 INTEGER 유형이 아닌 경우 함수가 평가되기 전에 내재적으로 INTEGER로 캐스트됩니다. 정수 값은 1 이상이어야 합니다. OCTETS가 지정되고 소스 문자열이 그래픽 데이터인 경우 정수 값은 홀수여야 합니다(SQLSTATE 428GC). 기본 시작 값은 1입니다. 시작 위치에 적용되는 문자열 단위의 CODEUNITS16, CODEUNITS32 또는 OCTETS에 대한 매개변수 설명을 참조하십시오.
- 발생
- source-string에서 검색할 패턴 표현식의 어커런스를 지정하는 표현식입니다. 표현식은 내장 문자열, 그래픽 문자열, 부울 또는 숫자 값을 리턴해야 합니다. 값이 INTEGER 유형이 아닌 경우 함수가 평가되기 전에 내재적으로 INTEGER로 캐스트됩니다. 발생 값은 1 이상이어야 합니다. 기본 발생 값은 1이며, 이는 패턴 표현식의 첫 번째 발생만 고려됨을 표시합니다.
- 플래그
- 패턴 일치의 측면을 제어하는 플래그를 지정하는
표현식입니다. 표현식은
FOR BIT DATA 속성을 지정하지 않는 내장 문자열을 리턴해야 합니다(SQLSTATE
42815). 문자열에는
하나 이상의 유효한 플래그 값이 포함될 수 있으며 플래그 값의 조합은
유효해야 합니다(SQLSTATE 2201T). 비어 있는 문자열은 값 'c'와
동일합니다. 기본 플래그 값은
'c'입니다.
표 1. 지원되는 플래그 값 플래그 값 설명 c 일치가 대소문자를 구분함을 지정합니다. 'c' 또는 'i'가 지정되지 않은 경우 이 플래그가 기본값입니다. 이 값은 'i' 값과 함께 지정할 수 없습니다. i 일치가 대소문자를 구분하지 않음을 지정합니다. 이 값은 'c' 값과 함께 지정할 수 없습니다. m 입력 데이터에 2라인 이상이 포함될 수 있음을 지정합니다. 기본적으로 패턴의 '^'은 입력 문자열의 처음에만 일치하며 패턴의 '$'는 입력 문자열의 끝에만 일치합니다. 이 플래그가 설정된 경우 "^" 및 "$"는 입력 문자열에서 각 라인의 처음과 끝에서도 일치합니다. n '.'를 지정합니다. 패턴의 문자는 입력 문자열의 행 종결자와 일치합니다. 기본적으로 '.' 문자는 패턴에서 행 종결자와 일치하지 않습니다. 입력 문자열의 캐리지 리턴 및 줄 바꾸기 쌍은 단일 행 종결자로 작동하며 패턴에서 단일 "."와 일치합니다. s '.'를 지정합니다. 패턴의 문자는 입력 문자열의 행 종결자와 일치합니다. 이 값은 'n' 값의 동의어입니다. x 이스케이프되지 않은 경우 패턴의 공백 문자가 무시됨을 지정합니다. - group
- 소스 문자열에서 리턴할 패턴 표현식의 캡처 그룹을 지정하는 표현식입니다. 표현식은 내장 문자, 2진 또는 그래픽 문자열또는 부울 값을 리턴해야 합니다. 값이 INTEGER 유형이 아닌 경우 함수가 평가되기 전에 내재적으로 INTEGER로 캐스트됩니다. 그룹 값은 0 이상이어야 하며 패턴 표현식의 캡처 그룹 수보다 크면 안 됩니다(SQLSTATE 22546). 기본 그룹 값은 0이며 이는 전체 패턴과 일치하는 문자열이 리턴됨을 표시합니다.
- CODEUNITS16, CODEUNITS32 또는 OCTETS
- 시작 값의 문자열 단위를 지정합니다.
- CODEUNITS16은 시작 값이 16비트 UTF-16 코드 단위로 표현되도록 지정합니다.
- CODEUNITS32는 시작 값이 32비트 UTF-32 코드 단위로 표현되도록 지정합니다. 이는 기본값입니다.
- OCTETS는 시작 값이 바이트 단위로 표현되도록 지정합니다.
문자열 단위가 CODEUNITS16 또는 OCTETS로 지정되고 소스 문자열의 문자열 단위가 CODEUNITS32인 경우에는 오류가 리턴됩니다(SQLSTATE 428GC).
자세한 정보는 문자열의 "내장 함수의 문자열 단위" 를 참조하십시오.
결과
함수의 결과는 문자열입니다. 문자열의 데이터 유형은 CHAR(VARCHAR이 됨)과 GRAPHIC(VARGRAPHIC이 됨) 외에는 소스 문자열과 동일한 데이터 유형이어야 합니다. 결과 데이터 유형의 길이 속성은 소스 문자열의 길이 속성과 동일합니다. 결과의 실제 길이는 패턴 표현식과 일치하는 문자열의 어커런스 길이입니다. 패턴 표현식을 찾을 수 없는 경우 결과는 널(NULL) 값입니다.
REGEXP_SUBSTR 함수의 결과는 널(NULL)이 될 수 있습니다. 인수가 널(NULL)이면 결과는 널(NULL) 값이 됩니다.
참고
- 정규식 처리는 ICU(International Components for Unicode) 정규식 인터페이스를 사용하여 수행됩니다.
- 유니코드가 아닌 데이터베이스에 대한 고려사항:
- 정규식 패턴은 반자 제어 문자만 지원합니다. 패턴 표현식 인수에는 문자열 데이터 유형을 사용하십시오. 그래픽 문자열 데이터 유형이 소스 문자열 인수에 사용되는 경우에도 문자열 데이터 유형을 패턴 표현식 인수에 사용할 수 있습니다.
- 패턴 표현식 인수가 그래픽 문자열 데이터 유형인 경우 소스 문자열 인수는 그래픽 문자열 데이터 유형이어야 합니다.
예:
- 'o' 앞의 문자와 일치하는 문자열을 리턴하십시오.
결과는 'lo'입니다.SELECT REGEXP_SUBSTR('hello to you', '.o',1,1) FROM sysibm.sysdummy1
- 'o' 앞의 문자와 일치하는 두 번째 문자열 어커런스를
리턴하십시오.
결과는 'to'입니다.SELECT REGEXP_SUBSTR('hello to you', '.o',1,2) FROM sysibm.sysdummy1
- 'o' 앞의 문자와 일치하는 세 번째 문자열 어커런스를
리턴하십시오.
결과는 'yo'입니다.SELECT REGEXP_SUBSTR('hello to you', '.o',1,3) FROM sysibm.sysdummy1