regexp_like 함수
【형식】
regexp_like (search_string, pattern [,match_option])
【예제】
SQL> select * from test;
ID NAME EMAIL
---------- ---------- ------------------------------
1 한라산 hanlasan@abc.co.kr
2 백두산 backdusan@abc.co.kr
3 금강산 gumgangsan@abc.co.kr
SQL> select * from test
2 where regexp_like(name, '^[한백]'); ☜ name 필드에서 한 또는 백자로 시작하는 레코드를 찾는다.
ID NAME EMAIL
---------- ---------- ------------------------------
1 한라산 hanlasan@abc.co.kr
2 백두산 backdusan@abc.co.kr
SQL> select * from test
2 where regexp_like(name,'강산$'); ☜ name 필드에서 강산자로 끝나는 레코드를 찾는다.
ID NAME EMAIL
---------- ---------- ------------------------------
3 금강산 gumgangsan@abc.co.kr
SQL> where REGEXP_LIKE('ABCDEFGH','CD') -- 조건에 포함되는 재료추출
regexp_substr 함수
문자열에 존재하는 임의의 패턴을 추출하여 출력한다.
【형식】
REGEXP_SUBSTR (source_char, pattern
[, position
[, occurrence
[, match_param
[subxpr]]]])
| source_char | 찾을 문자로 데이터타입은 :CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, NCLOB임 |
| pattern | 512바이트까지의 정규표현식으로 데이터타입이 source_char과 다르면 pattern의 데이터타입을 source_char과 같게 변환 |
| position | 찾을 문자의 위치로 디폴트는 1이며, 이는 첫 글자부터 찾는 다는 의미 |
| occurrence | source_char에 pattern이 발생한 횟수로 디폴트는 1임 |
| match_parameter | 디폴트 매칭을 변경할 때 사용 |
| subexpr | 0∼9의 정수로 subexpression의 위치를 나타내며, 0은 pattern과 substring이 완전히 일치함을 의미 |
【예제】
SQL> select * from test;
ID NAME EMAIL
---------- -------------------- ------------------------------
1 Hello1234 hello@abc.c.kr
2 you3456 you@abc.co.kr
SQL> select email, regexp_substr(email, '[^@]+') ID from test;
EMAIL ID
-------------------- --------------
hello@abc.c.kr hello
you@abc.co.kr you
SQL>
문자열 중에서 @ 이전의 문자만 출력하는 예제이다.
【예제】
SQL> select REGEXP_SUBSTR('500 Oracle Parkway, Redwood Shores, CA',
2 ',[^,]+,') "REGEXP_SUBSTR"
3 from dual;
REGEXP_SUBSTR
----------------------------------
, Redwood Shores,
SQL> select REGEXP_SUBSTR('http://www.oracle.com/products',
2 'http://([[:alnum:]]+\.?){3,4}/?')
3 "REGEXP_SUBSTR"
4 from dual;
REGEXP_SUBSTR
--------------------------------------------
http://www.oracle.com/
SQL> select REGEXP_SUBSTR('1234567890', '(123)(4(56)(78))',1,1,'i',1)
2 "REGEXP_SUBSTR"
3 from dual; ☜ 첫 번째 subexpression
REGEXP
------
123
SQL> select REGEXP_SUBSTR('1234567890', '(123)(4(56)(78))',1,1,'i',4)
2 "REGEXP_SUBSTR"
3 from dual; ☜ 4번째 subexpression
REGE
----
78
SQL>
참조 : http://bugcaps.springnote.com/pages/10827864.xhtml
'Database' 카테고리의 다른 글
| [ORACLE]이메일 도메인 걸러내기 (0) | 2012.11.22 |
|---|---|
| [ORACLE]전월 1일, 말일 (0) | 2012.11.22 |
| [ORACLE]나이구하기쿼리 (0) | 2012.11.09 |
| [ORACLE]데이터 페이징 처리방법(게시판) (0) | 2012.10.11 |
| [ORACLE]SELECT INSERT 속도개선, nologging (0) | 2012.09.05 |