새소식

300x250
3. Database/Oracle 기본

[Oracle] 정규 표현식(Regular Expression)

  • -
728x90

정규 표현식(Regular Expression)

 - Oracle 10g에서 새로 도입

 



1. REGEXP_LIKE 함수

 - 문법 : REGEXP_LIKE (srcstr, pattern [, match_option ] )

 - scrstr : 검색하고자 하는 값

 - pattern : Regualr Expression Operation

 - match_option : 찾고자 하는 문자의 대소문자 구분이 기본으로 설정되어 있다. 대소문자를 구분할 필요가 없다면 'i' 옵션 사용을 지정한다.

 

SELECT  ADDR1

FROM   주소테이블

WHERE  REGEXP_LIKE (ADDR1, '불광[^2]');

[^expression] => expression이 부정되는 경우 즉 '2'를 포함하는 주소는 제외.

 

SELECT  NAME

FROM   회원테이블

WHERE  REGEXP_LIKE (NAME, '김대[희권]');

 

[expression] => 김대 다음 '' 또는 '' 을 포함하는 이름을 찾는다.

 

 

2. REGEXP_SUBSTR 함수

 - 문법 : REGEXP_SUBSTR( srcstr, pattern [, position[, occurrence [,match_option]]])

 - position : 특정 문자를 어디서 찾아야 하는지 위치를 나타낸다 (default 1)

 - occurrence : 검색하고자 하는 문자열에서 특정 문자의 발생 pattern (default 1)

 

 ex)1 email 중 아이디만 얻고자 할때

 SELECT EMAIL, REGEXP_SUBSTR(EMAIL, '[^@]+') AS SUBEMAIL

 FROM 회원테이블;


email 

subemail 

test@test.co.kr 

test 

gogosing@nate.com 

gogosing 

goddamn@gmail.com 

goddamn 


 

3. REGEXP_REPLACE 함수

 - 문법 : REGEXP_REPLACE( srcstr, pattern [,replacestr [, posision [, occurrence [, match_option ]]]])

 - replacestr : 대체하고자 하는 문장

 

 ex)1 공백이 실수로 2개이상 작성된 내용을 1개의 공백으로 치환해주기.

  with testStr as (

  select 'God    Damn!!' as 문장 from dual

  union all

  select 'Nice Play !!' as 문장 from dual

 )

 select REGEXP_REPLACE(문장, '( ){2,}', ' ') AS 문장

 from testStr;

 

300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.