IT/Oracle DBMS
Oracle REGEXP_COUNT 설명 : 오라클 함수
WorldSeeker
2021. 3. 30. 10:44
1. 함수의 목적
Oracle REGEXP_COUNT는 패턴이 소스 문자열에서 발생하는 횟수를 반환하여 REGEXP_INSTR 함수의 기능을 보완한다.
2. 샘플을 통한 개념 퀵뷰
'123123123123123'에 '123'이 들어있는 횟수를 소스 문자열의 첫번재 위치부터 대소문자를 무시하고 나타난 횟수를 카운트한다.
SELECT REGEXP_COUNT('123123123123123', '123', 1, 'i') REGEXP_COUNT
FROM DUAL;
REGEXP_COUNT
------------
5
3. 사용방법
Oracle
4. 함수 PARAMETER 설명
일치하는 항목이 없으면 함수는 0을 반환한다.
[source_char]
source_char는 검색할 소스 문자열이다.
일반적으로 문자열이며 CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB 또는 NCLOB 데이터 유형이 될 수 있다.
[pattern]
pattern은 정규식으로 입력한다.
일반적으로 텍스트이며 CHAR, VARCHAR2, NCHAR 또는 NVARCHAR2 데이터 유형 중 하나이며, 최대 512 바이트까지 포함 할 수 있다.
pattern의 데이터 유형이 source_char의 데이터 유형과 다른 경우 pattern을 source_char의 데이터 유형으로 변환한다.
REGEXP_COUNT는 pattern의 표현식에 있는 괄호를 무시한다.
예를 들어 '(123 (45))'패턴은 '12345'와 같다.
[position]
position은 검색을 시작해야 하는 source_char의 위치를 나타내는 양의 정수이다.
기본값은 1로, Oracle이 source_char의 첫 문자에서 검색을 시작함을 의미한다.
[match_param]
match_param은 함수의 기본 일치 동작을 변경할 수 있다.
match_param에 대해 다음 값 중 하나 이상을 지정할 수 있다.
- 'i'는 대소문자를 구분하지 않는다.
- 'c'는 대소문자를 구분한다.
- 'n'은 마침표 (.)와 일치하는 모든 문자를 줄 바꿈 문자와 일치시킨다. 이 매개변수를 생략하면 마침표는 개행문자로 보지 않는다.
- 'm'은 소스 문자열을 여러 줄로 취급한다. 이 매개 변수를 생략하면 소스 문자열을 단일 행으로 취급한다.
- 'x'는 공백 문자를 무시한다.
여러 개의 모순된 값을 지정하면 Oracle은 마지막값을 사용합니다. 예를 들어, 'ic'를 지정하면, 'c'를 적용하여 대소문자를 구분한다. 위에 표시된 문자 이외의 문자를 지정하면 오라클은 오류를 반환한다.
match_param에 아무 것도 적지 않게 되면,
- 대소문자 구분은 NLS_SORT 매개 변수의 값에 의해 결정된다.
- 마침표 (.)가 개행문자로 보지 않는다.
- 소스문자열은 단일행으로 처리된다.
5. 다양한 샘플표현
example1) position에 3을 주어서 '123'과 매칭되는 횟수는 3으로 제한된다.
SELECT REGEXP_COUNT('123123123123', '123', 3, 'i') COUNT
FROM DUAL;
COUNT
----------
3