● 정규 표현식
- 문자열의 공통된 규칙을 보다 일반화 하여 표현하는 방법
- 정규 표현식 사용 가능한 문자함수 제공(regexp_replace, regexp_substr, regexp_instr, ...)
ex) 숫자를 포함하는, 숫자로 시작하는 4자리, 두번째 자리가 A 인 5 글자
예제) 일반화 규칙 찾아내기
● 정규 표현식 종류
예제) 전화번호의 일반화
☞ 전화번호는 숫자와 - 으로 구성 => [0-9-]* 로 표현 가능([] 안에 들어가는 패턴이 한자리의 문자열을 구성할 수 있는 값들)
☞ 두 전화번호가 tel 값은 동시에 있지만.)가 있는 경우와 없는 경우를 모두 표현 => ? 사용(?는 값이 없거나 1개 있음을 의미)
● REGEXP_REPLACE
- 정규식 표현을 사용한 문자열 치환 가능
** 문법
(대상, 찾을문자열,[바꿀문자열],[검색위치],[발견횟수],[옵션])
1. 특징
- 바꿀문자열 생략 시 문자열 삭제
- 검색위치 생략 시 1
- 발견횟수 생략 시 0(모든)
2. 옵션
- c : 대소를 구분하여 검색
- i : 대소를 구분하지 않고 검색
- m : 패턴을 다중라인으로 선언 가능
예제)ID 에서 숫자 삭제
☞ 빈문자열을 전달하여 숫자를 모두 삭제 처리
예제)ID 에서 특수기호 삭제
☞ \w 는 문자와 숫자를,_를 포함, \W는 \w의 반대 집합이므로 문자와 숫자와 _가 아닌 특수기호와 공백을 의미
예제) PROFESSOR 테이블의 ID 에서 문자와 문자 바로 뒤에 오는 숫자를 삭제(대소구분 X)
●● kong-12 에서 g-1 을 지우는 방법
예제) PRODUCT 테이블의 상품명에서 괄호포함, 괄호안에 들어가는 모든 글자를 삭제
●● 테이블 데이터
☞ 괄호는 서브그룹을 만드는 정규 표현식이므로 일반 괄호를 표현하기 위해서는 \) 로 전달해야 함
☞ \(.+\) : ()안에 엔터를 제외한 모든 값 허용
예제) REGEXP_REPLACE 를 사용하여 두 번째 발견된 문자 값을 X 로 치환
☞ 문자 삭제 시 원하는 찾고자 하는 시작 위치와 발견횟수를 전달 할 수 있음
☞ RESULT3 : 처음부터 스캔하여 두 번째로 발견되는 문자를 X로 치환(마스킹 처리)
● REGEXP_SUBSTR
- 정규식 표현식을 사용한 문자열 추출
- 옵션은 REGEXP_SUBSTR 과 동일
●● 문법
REGEXP_SUBSTR(대상, 패턴,[검색위치], [발견횟수], [옵션], [추출그룹])
●● 특징
- 검색위치 생략 시 1
- 발견횟수 생략 시 1
- 추출그룹은 서브패턴을 추출 시 그 중 추출할 서브패턴 번호
예제) 전화번호를 분리하여 지역번호 추출
☞ 전화번호 구성 : 숫자여러개 + ) + 숫자여러개 + - + 숫자여러개
차례대로 \d+, \), \d+, -, \d+ 로 표현 가능, 그 중 첫 번째 그룹을 추출
예제) 이메일 아이디 추출(서브패턴 활용)
☞ EMAIL 주소는 EMAIL_ID@ENGINE 으로 구성
☞ EMAIL_ID : 몇 특수기호를 제외한 영문, 숫자, 기호로 구성
☞ ENGINE : 영문과 .으로 구성
3. REGEXP_INSTR
- 주어진 문자열에서 특정패턴의 시작 위치를 반환
- 옵션은 REGEXP_SUBSTR과 동일
●● 문법
REGEXP_INSTR(원본, 찾을문자열,[시작위치],[발견횟수],[옵션])
●● 특징
- 시작위치 생략 시 처음부터 확인(기본값:1)
- 발견횟수 생략시 처음 발견된 문자열 위치 리턴
예제) ID 값에서 두 번째 발견된 숫자의 위치
☞ \d는 숫자를 나타내는 표현이고, 뒤에 횟수를 지정하지 않으면 한 자리수의 숫자를 의미함
예제) 정규식 표현식을 사용한 패턴에 일치하는 n 번째 문자열 위치
☞ 다음과 같은 문자열에서 공백이 아닌 문자열의 반복들 중 처음부터 스캔하여 두 번째 발견된 것의 위치 리턴
● REGEXP_LIKE
- 주어진 문자열에서 특정패턴을 갖는 경우 반환(WHERE 절 사용만 가능)
- 옵션 REGEXP_REPLACE 와 동일
** 문법
REGEXP_LIKE(원본, 찾을문자열,[옵션])
예제) ID값이 숫자로 끝나는 교수 정보 출력
● REGEXP_COUNT
- 주어진 문자열에서 특정패턴의 횟수를 반환
- 옵션 REGEXP_REPLACE 와 동일
** 문법
REGEXP_COUNT (원본, 찾을문자열,[옵션])
예제) ID 값에서의 숫자의 수
☞ \d 는 한 자리수의 숫자를 의미하며 \d+는 연속적인 숫자를 의미. 따라서 COUNT 시 연속적인 숫자를 하나로 취급함
'MySQLD 자격증 공부' 카테고리의 다른 글
2 - 17 (0) | 2024.08.22 |
---|---|
함수의 종류 (암기용) (0) | 2024.08.19 |
2 - 15 (0) | 2024.08.18 |
2 - 14 (0) | 2024.08.18 |
2 - 13 (0) | 2024.08.18 |