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