Search

[Oracle] 다중 LIKE(REGEXP_LIKE)

Database 2018.06.12 08:13 Posted by 애플자라
EDIT EM_MMT_LOG_201806
WHERE TRAN_ETC2='MASS'
AND REGEXP_LIKE(TRAN_ETC1, '2018060800001|2018061100001|2018061100002')
--AND TRAN_ETC1 (LIKE '%2018060800001%' or LIKE '%2018061100001%' or LIKE '%2018061100002%')

 

'Database' 카테고리의 다른 글

[ORACLE]ROW_NUMBER 순서  (0) 2018.07.03
[Oracle] 누적접수건수  (0) 2018.06.27
[Oracle] 다중 LIKE(REGEXP_LIKE)  (0) 2018.06.12
[ORACLE]COUNT DECODE  (0) 2018.06.04
[ORACLE]WMSYS.WM_CONCAT 월별데이터 합치기  (0) 2018.04.06
[ORACLE]그룹함수로 중복된 컬럼 제거하기  (0) 2017.11.08

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