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)