REGEXP_LIKE 스칼라 함수

REGEXP_LIKE 스칼라 함수는 부울 값을 리턴하며 정규식 패턴이 문자열에 있는지 여부를 표시합니다. 술어가 지원되는 경우에만 함수를 사용할 수 있습니다.

구문 다이어그램 읽기시각적 구문 다이어그램 건너뛰기REGEXP_LIKE(source-string ,pattern-expression ,시작 ,flags ,CODEUNITS32,CODEUNITS16OCTETS )

스키마는 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에 대한 매개변수 설명을 참조하십시오.
플래그
패턴 일치의 측면을 제어하는 플래그를 지정하는 표현식입니다. 표현식은 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).

자세한 정보는 문자열의 "내장 함수의 문자열 단위" 를 참조하십시오.

결과

함수의 결과는 BOOLEAN 값입니다. 패턴 표현식이 있는 경우 결과는 true입니다. 패턴 표현식을 찾을 수 없는 경우에는 결과가 false입니다. 인수의 값이 널(NULL)인 경우 결과를 알 수 없습니다.

참고

  • 정규식 처리는 ICU(International Components for Unicode) 정규식 인터페이스를 사용하여 수행됩니다.
  • 유니코드가 아닌 데이터베이스에 대한 고려사항:
    • 정규식 패턴은 반자 제어 문자만 지원합니다. 패턴 표현식 인수에는 문자열 데이터 유형을 사용하십시오. 그래픽 문자열 데이터 유형이 소스 문자열 인수에 사용되는 경우에도 문자열 데이터 유형을 패턴 표현식 인수에 사용할 수 있습니다.
    • 패턴 표현식 인수가 그래픽 문자열 데이터 유형인 경우 소스 문자열 인수는 그래픽 문자열 데이터 유형이어야 합니다.
    • 소스 문자열 인수와 대체 문자열 인수는 모두 문자열 데이터 유형이거나 모두 그래픽 문자열 데이터 유형이어야 합니다.

예:

  1. 대문자 또는 소문자를 고려하지 않고 EMPLOYEE 테이블에서 성의 철자가 LUCCHESSI, LUCHESSI 또는 LUCHESI인 직원 번호를 선택하십시오.
       SELECT EMPNO FROM EMPLOYEE
          WHERE REGEXP_LIKE(LASTNAME,'luc+?hes+?i','i')
    결과는 EMPNO 값이 '000110'인 한 행입니다.
  2. PRODUCT 테이블에서 유효하지 않은 제품 ID 값을 선택하십시오. 예상 형식은 'nnn-nnn-nn'이며 여기서 'n'은 0 - 9자리입니다.
    SELECT PID FROM PRODUCT 
       WHERE NOT REGEXP_LIKE(pid,'[0-9]{3}-[0-9]{3}-[0-9]{2}')
    모든 제품 ID가 패턴과 일치하므로 결과는 0행입니다.