728x90
반응형
정규 표현식
- 문자열의 공통된 규칙을 보다 일반화 하여 표현하는 방법
- 정규 표현식 사용 가능한 문자함수 제공
- regexp_replace, regexp_substr, regexp_instr, ...
- 예) '숫자를 포함하는', '숫자로 시작하는 4자리', '두 번째 자리가 A인 5글자'
일반화 규칙 찾아내기
-> '숫자를 연속적으로 3개 이상 포함하는' 공통 패턴
정규 표현식 종류
예제
문자함수
REGEXP_REPLACE
정규 표현식을 사용한 문자열 치환 가능
REGEXP_REPLACE(대상, 찾을문자열, [바꿀문자열], [검색위치], [발견횟수], [옵션])
특징
- 바꿀 문자열 생략 시 문자열 삭제
- 검색 위치 생략 시 1
- 발견 횟수 생략 시 0 (all)
옵션
- c
- 대소를 구분하여 검색
- i
- 대소를 구분하지 않고 검색
- m
- 패턴을 다중 라인으로 선언 가능
예시
REGEXP_SUBSTR
- 정규식 표현식을 사용한 문자열 추출
- 옵션은 REGEXP_SUBSTR과 동일
REGEXP_SUBSTR(대상, 패턴, [검색위치], [발견횟수], [옵션], [추출그룹])
특징
- 검색위치 생략 시 1
- 발견 횟수 생략 시 1
- 추출 그룹은 서브 패턴을 추출 시 그 중 추출 할 서브 패턴 번호
예시
-> 전화번호 구성 :숫자여러개 + ) + 숫자여러개 + - + 숫자여러개
차례대로 \d+, \), \d+, -, \d+ 로 표현 가능, 그 중 첫 번째 그룹을 추출
-> EMAIL 주소는 EMAIL_ID@ENGINE 으로 구성
-> EMAIL_ID : 몇 특수기호를 제외한 영문, 숫자, 기호로 구성
-> ENGINE : 영문과 .으로 구성
REGEXP_INSTR
주어진 문자열에서 특정 패턴의 시작 위치를 반환
REGEXP_INSTR(원본, 찾을문자열, [시작위치], [발견횟수])
특징
- 시작 위치 생략 시 처음부터 확인 (default: 1)
- 발견 횟수 생략 시 처음 발견된 문자열 위치 리턴
예시
REGEXP_LIKE
- 주어진 문자열에서 특정 패턴을 갖는 경우 반환 (WHERE 절 사용만 가능)
- 옵션 REGEXP_REPLACE와 동일
- 시작 위치, 추출 개수 인수 없음
REGEXP_LIKE(원본, 찾을문자열, [옵션])
예시
REGEXP_COUNT
- 주어진 문자열에서 특정 패턴의 횟수를 반환
- 옵션은 REGEXP_REPLACE와 동일
REGEXP_COUNT (원본, 찾을문자열, 시작위치, [옵션])
예시
-> \d 는 한 자리수의 숫자를 의미하며 \d+는 연속적인 숫자를 의미. 따라서 COUNT 시 연속적인 숫자를 하나로 취급.
반응형
'[DB]DataBase > [SQL]' 카테고리의 다른 글
[SQLD] TCL (0) | 2024.05.21 |
---|---|
[SQLD] DML (0) | 2024.05.21 |
[SQLD] PIVOT 절과 UNPIVOT 절 (0) | 2024.05.20 |
[SQLD] 계층형 질의와 셀프 조인 (0) | 2024.05.19 |
[SQLD] Top N 쿼리 (0) | 2024.05.18 |