DataBase
REGEXP 함수
정규표현식을 사용하요 문자열을 처리하는 함수
정규표현식 : 문자열 내 특정 패턴을 찾기 위한 기호(메타문자)의 조합
텍스트 검색, 데이터 유효선 검사, 문자열 치환 등의 역할을 수행
SELECT PLAYER_NAME FROM PLAYER WHERE PLAYER_NAME LIKE '김%'; |
→ → → → → → → → → |
SELECT PLAYER_NAME FROM PLAYER WHERE REGEXP_LIKE(PLAYER_NAME,'^김'); |
SELECT PLAYER_NAME FROM PLAYER WHERE PLAYER_NAME LIKE '%정'%'; |
SELECT PLAYER_NAME FROM PLAYER WHERE REGEXP_LIKE(PLAYER_NAME, '정'); |
함수 종류
REGEXP 함수 | 설명 | 함수 사용 예 |
REGEXP_LIKE | 문자열이 정규 표현식 패턴과 일치하는지 여부를 반환 |
SELECT PLAYER_NAME FROM PLAYER WHERE REGEXP_LIKE(PLAYER_NAME, '호$'); |
REGEXP_REPLACE | 문자열이 정규 표현식 패턴과 일치하는 부분을 다른 문자열로 대체 |
REGEXP_REPLACE ('abc def 123',[정규식],대체문자); |
REGEXP_INSTR | 문자열이 정규 표현식 패턴과 일치하는 부분의 시작 위치를 반환 |
REGEXP_INSTR(문자열, 정규식); |
REGEXP_SUBSTR | 문자열이 정규 표현식 패턴과 일치하는 부분을 추출하여 반환 |
REGEXP_SUBSTR(문자열, 정규식); |
REGEXP_COUNT | 문자열이 정규 표현식 패턴과 일치하는 부분의 개수를 반환 |
REGEXP_COUNT(문자열, 정규식); |
주요 메타 문자
메타 문자 | 설명 | 패턴 예 | 매칭 문자열 예 |
. | 임의의 한 문자와 일치 | 'A.B' | 'A B', A1B', 'AAA', 'ABB', 'ACB' |
^ | 문자열의 시작과 일치 | '^ABC' | 'ABC', 'ABC123' |
$ | 문자열의 끝과 일치 | 'ABC$' | 'ABC', '123ABC' |
* | 선행 문자 0회 이상 반복 | 'AB*C' | 'AC', 'ABC', 'ABB', 'ABBBC' |
+ | 선행 문자 1회 이상 반복 | 'AB+C' | 'ABC', 'ABBC', 'ABBBC' |
? | 선행 문자 1회 이하 출현 | 'AB?C' | 'AC', ABC' |
| | OR 연산 | 'AB|CD' | 'ABD', 'ACD' |
( ) | 그룹화 → 한 문자로 취급 | 'A(BC)+D' | 'ABCD', 'ABCDCD' |
{ } | 명시된 숫자만큼 반복 | 'AB{2}C(DE){2}' | 'ABBCDEDE' |
[ ] | 나열된 문자들 중 하나라도 일치 | '[ABC]' | 'A', 'B', 'C', 'ABE', 'CUP' |
[ - ] | 연속 문자의 범위 지정 | '[A-C]' | 'A', 'B', 'C', 'ABE', 'CUP' |
[^ ] | 나열된 문자들을 제외한 전체 문자들 중 하나라도 일치 |
'[^ABC]' | 'D', 'BDE', 'ABCD' |
\d | 숫자를 의미 | '\d' | REGEXP_COUNT('ab 123 _!', '\d') => 3 |
\w | 문자를 의미 (숫자와 '_' 포함) | '\w' | REGEXP_COUNT('ab 123 _!', '\w') => 6 |
\s | 공백, 탭, 줄 바꿈을 의미 | '\s' | REGEXP_COUNT('ab 123 _!', '\s') => 2 |
예제
Q) STADIUM 테이블에서 ADDRESS가 '서울' 또는 '인천'을 포함하는 행만 출력하되,
모든 숫자는 'X'로 대체하여 출력하는 쿼리를 작성하시오.
SELECT REGEXP_REPLACE (ADDRESS, '[0-9]', 'X') FORM STADIUM
WHERE REGEXP_LIKE (ADDRESS, '서울|인천');
'javaboiii의 DataBase' 카테고리의 다른 글
DB - 다중 행 함수(Multi-Row Function) (0) | 2024.08.20 |
---|---|
DB - 서브쿼리(Subquery) (0) | 2024.08.18 |
DB - DCL(Data Control Language) (0) | 2024.08.15 |
DB - TCL(Transaction Control Language) (0) | 2024.08.13 |
DB - JOIN (0) | 2024.08.12 |