Oracle Regular Expression 함수 regexp_replace( ) 는 replace( ) 함수에 정규표현식을 쓸 수 있도록 확장한 함수 입니다.
replace( ) 함수가 대상문자열에서 특정 문자열(Search String) 찾아서 다른 문자열로 바꿔치기 해주는 함수인데,
regexp_replace( ) 함수는 Search String 대신에 "정규표현식"을 쓴다는 점이 다릅니다.
regexp_replace() 함수의 구문(Syntax)은 다음과 같습니다.
source_char : 대상 문자열
pattern : 정규표현식 패턴
replace_string : 바꿔치기할 문자열
position : 문자열내에서 (패턴을 체크할) 처음 시작 위치
occurrence : 몇번째 일치하는 건지. ( 0 이면 전부 바꿔치기 )
match_param : 'i' (대소문자 무시), 'c' (대소문자 구분)
예제를 통해서 사용법을 확인해보면,
♣ 문자열내에서 'CD' 를 '--' 으로 바꿔치기 (대소문자 구분)
'c' 인자를 줬기 때문에 대소문자를 구분해서 cd 는 놔두고, CD 문자들만 -- 로 대체되었습니다.
5번째 인자에 0 을 줬기 때문에 일치하는 모든 문자열을 바꿔치기 합니다.
0 이 아닌 값을 주면, 일치하는 n 번째 문자열만 바꿔치기 할 수 있습니다.
♣ 문자열에서 숫자만 모조리 제거하기
패턴 [^[:alpha:]] 에서 [:alpha] 는 앞파벳(대소문자포함)을 가리키는 문자셋입니다.
앞에 ^가 붙어있으니 부정의 의미가 됩니다. 즉, 알파벳이 아닌것들을 찾아라~~ 입니다.
regexp_replace( ) 함수에서 3번째 replace_string 들어갈 자리를 지정하지 않으면 null 을 의미합니다.
즉, 알파벳이 아닌 놈들을 찾아서 모두 null 로 바꿔라~ 모두 제거하라~ 가 되겄습니다.
♣ 문자열에서 알파벳문자들만 특수문자 # 으로 대체하기
알파벳이 아니라 숫자를 바꾸려면 [[:alpha:]] 대신에 [[:digit:]] 를 사용하면 됩니다.
물론, [[:digit:]] 대신에 [[0-9]] 를 써도 되고, [[:alpha:]] 대신에 [A-Za-z] 를 써도 됩니다.
♣ 문자열에서 한글 문자들만 제거하기
UTF8 한글의 경우, '가' 글자부터 시작해서 '힟' 으로 끝나기 때문에 [가-힟] 으로 패턴을 지정하면 모든 한글이 됩니다.
EUC-KR 한글의 경우에는 마지막 글자가 '힟' 이 아니라 '힝' 입니다.
그래서 EUC-KR 인 경우는 패턴문자열을 [가-힝] 으로 지정해줘야 모든 한글이 잡히게 됩니다.
▶ 참고 : 오라클 정규표현식(Regular Expression) 소개 메인 페이지
'IT관련' 카테고리의 다른 글
오라클 정규표현식 함수 regexp_replace 샘플예제 (날짜 포맷 변경하기 SQL문) (0) | 2020.12.10 |
---|---|
오라클 정규표현식 함수 regexp_replace 샘플예제 (Email 주소에서 @앞부분만 다른 문자열로 바꿔치기 SQL문) (0) | 2020.12.10 |
오라클 정규표현식 함수 regexp_substr 샘플예제 (문자열내에서 http URL 만 추출하는 SQL문) (0) | 2020.12.10 |
오라클 정규표현식 함수 regexp_instr, regexp_substr 샘플예제 (문자열의 위치 찾기, 추출하기) (0) | 2020.12.10 |
오라클 정규표현식 함수 regexp_count 함수 샘플예제 (문자열내에 반복 패턴 카운트) (0) | 2020.12.09 |