본문 바로가기
DB/Oracle

정규식

by so_o 2021. 6. 29.

 

1. 정규식을 이용한 패턴 (REGEX_LIKE)

<예제>

전화번호가 있는 게시글 찾기    

 

   1) 오라클 방법

      SELECT * FROM NOTICE WHERE TITLE LIKE '%-%-%';

 

 

   2) 정규식 사용

    * REGEX에서
      시작할 땐  ^ 를 사용하고, 끝날 땐 $를 사용한다.

   * 단, 찾고자 하는 문자가 다른 문자들 사이에 있을 경우에는 ^와 $를 생략한다.
        예) abcd 010-123-4567 efgh

    * WHERE REGEXP_LIKE(컬럼명, '^01[016-9]-\d{3,4}-\d{4}$');

 

      (1) 01[016789]-[0123456789]...[0123456789]-[0123456789]...[0123456789]

 

      (2) 01[016-9]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]

 

      (3) 01[016-9]-\d\d\d\d-\d\d\d\d   

          => \d는 [0-9]와 같은 의미

 

      (4) 01[016-9]-\d{3,4}-\d{4}   

          => \d\{3,4}는 3번 또는 4번 반복해라

          => \d{4}는 4번 반복해라는 의미

 

 

 SELECT * FROM NOTICE WHERE REGEXP_LIKE(TITLE, '^01[016-9]-\d{3,4}-\d{4}$');

 

 


2. 문자열 비교를 위한 정규식 (^\D\w+@...)

<예제>

tiger@naver.com

 

   1) \w : [0-9a-zA-Z]와 같다
   2) + : 하나이상
   3) * : 0개 이상
   4) | : 또는 (=둘다 허용된다)
   5) \d : [0-9] 
   6) \D : [^0-9]

 

이메일 사용할 때 공통적으로 들어가는 문자는   @ . com net org 이다.

여기에서 com, net, org는 셋 중 하나만 사용된다.

 

@앞에는 문자가 무조건 들어가야 하므로 [0-9a-zA-Z]@  => 이런식으로 작성해야 한다.

\w는 [0-9a-zA-Z]대신에 사용할 수 있다.

 

 

\w+ @ \w+. (com | net | org)

정규식을 이용해서 위와 같이 사용할 수 있다.

하지만, 이메일은 숫자로 시작할 수 없다  =>  [^0-9] 또는 \D를 사용한다.

 

[^0-9]\w * @ [^0-9]\w. (com | net | org)


\D\w * @ \D\w*. (com | net | org)

 

'DB > Oracle' 카테고리의 다른 글

중복 값 제거 (DISTINT)  (0) 2021.06.29
ROWNUM  (0) 2021.06.29
관계 연산자  (0) 2021.06.28
SQL_ DML  (0) 2021.06.28
오류  (0) 2021.06.28