DataBase/Oracle
[Oracle] 정규식 함수 REGEXP_REPLACE(문자열 치환)
mingmongs
2025. 4. 2. 09:26
오라클 10g부터 정규식을 사용할 수 있도록 함수가 추가되었다.
따라서 기존 REPLACE 함수를 정규식을 활용하여 문자열의 패턴을 찾아 더 간단하게 처리할 수 있게 되었다.
정규식을 활용한 REPLACE 함수는 REGEXP_REPLACE() 이고 구문(Syntax)는 아래와 같다.
REGXPP_REPALCE( source_char, patten
[, replace_string
[, position
[, occurrence
[, match_param]
]
]
]
)
- source_char : 대상 문자열
- pattern : 정규표현식 패턴
- replace_string : 바꿔치기할 문자열
- position : 문자열내에서 (패턴을 체크할) 처음 시작 위치
- occurrence : 몇번째 일치하는 건지. ( 0 이면 전부 바꿔치기 )
- match_param : 'i' (대소문자 무시), 'c' (대소문자 구분)
메타 문자
. 임의의 한 문자
| OR과 동일 (왼쪽 또는 오른쪽과 일치)
[] 문자 클래스
[-] 문자 범위 (0-9, a-z, A-Z, 가-힝)
[^] 부정 문자 클래스
\ 다음에 오는 문자를 이스케이프 (메타 문자를 일반 문자로)
^ 문자열의 시작과 일치
$ 문자열의 끝과 일치
예시
--치환할 문자를 |로 구분하여 입력
SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs', 'Stay|Foolish|Steve', '*')
FROM DUAL;
-- 결과: * Hungry, * *. - * Jobs
-- 알파벳을 제외한 나머지 표시
SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs 2005', '[[:alpha:]]')
FROM DUAL;
-- 결과: , . - 2005
-- 알파벳만 표시
SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs 2005', '[^[:alpha:]]')
FROM DUAL;
-- 결과: StayHungryStayFoolishSteveJobs
[reference]
https://gent.tistory.com/546 https://gent.tistory.com/82 https://jack-of-all-trades.tistory.com/388