javaboiii의 DataBase

DB - REGEXP 함수

javaboiii 2024. 8. 10. 19:43

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