오라클 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
'DataBase > Oracle' 카테고리의 다른 글
[Oracle] 모든 테이블과 컬럼 조회하기 (0) | 2025.05.24 |
---|---|
[Oracle] XMLELEMENT, XMLAGG 함수 (0) | 2025.05.23 |
[Oracle] 컬럼 정보 조회, 코멘트(COMMENT)로 테이블,컬럼 찾기 (0) | 2025.05.22 |
[Oracle] USER_SOURCE, ALL_SOURCE 검색 (0) | 2025.05.22 |
[Oracle] 달의 마지막 날짜 구하기 LAST_DAY 함수 (0) | 2025.05.13 |