행위

오라클 정규식

DB CAFE

Dbcafe (토론 | 기여)님의 2019년 5월 22일 (수) 08:11 판
thumb_up 추천메뉴 바로가기


1 정규식 예시[편집]

1.1 REGEXP_REPLACE[편집]

REGEXP_REPLACE(COLUMN, [REG_EXP], [REPLACE_STR], [START_INDEX], [REPLACE_INDEX])

WITH T AS (
            SELECT '김, 수 영' NAME FROM DUAL
  UNION ALL SELECT 'KIM/SUYOUNG'  FROM DUAL            
  UNION ALL SELECT 'KIM suYOUNG'  FROM DUAL
  UNION ALL SELECT 'KIM su YOUNG'  FROM DUAL  
  UNION ALL SELECT 'KIM su,YOUNG'  FROM DUAL
  UNION ALL SELECT 'KIM,su/YOUNG'  FROM DUAL
  UNION ALL SELECT '김 수한무 거북이와 두루미 삼천갑자 동방석'  FROM DUAL               
  UNION ALL SELECT 'lee dkd dkdk dkdkd kd dkdkdkd 1 2 2'  FROM DUAL  
)
SELECT REGEXP_SUBSTR(NAME, '[^ /,]+', 1) 성
     , REGEXP_REPLACE(NAME, '([^ /,]+)([^가-힣a-zA-Z]+)([^/,-]+)', '\3\4\5') 이름     
  FROM T;

1.2 REGEXP_SUBSTR[편집]

REGEXP_SUBSTR(COLUMN, [REG_EXP], [START_INDEX], [GROUP_INDEX])

COLUMN : 컬럼명 REG_EXP : 정규표현식 작성 START_INDEX : 해당 정규표현식을 검색할 문자열의 INDEX 지정 GROUP_INDEX : 해당 정규표현식으로 잘라진 그룹이 2개 이상이라면 INDEX 지정해 그룹 선택

SELECT REGEXP_SUBSTR('test@domain.com', '[@]+', 1, 1) AS EMAIL_ID
     , REGEXP_SUBSTR('test@domain.com', '[@]+', 1, 2) AS EMAIL_DOMAIN
 FROM    REG_EXP_TEST

1.3 REGEXP_LIKE[편집]

WITH TEMP_TABLE AS (
   SELECT 'Samsung Galaxy Note 4' TEXT FROM dual union all
   SELECT 'Apple iPhone 6 Plus' TEXT FROM dual union all
   SELECT 'Samsung Galaxy S5' TEXT FROM dual union all
   SELECT 'Apple iPhone 6' TEXT FROM dual union all
   SELECT 'LG G3' TEXT FROM dual union all
   SELECT 'SonyXperia Z3' TEXT FROM dual union all
   SELECT 'Motorola Moto G' TEXT FROM dual union all
   SELECT 'HTC One M8' TEXT FROM dual union all
   SELECT 'Nokia Lumia 930' TEXT FROM dual
)
SELECT *
   FROM TEMP_TABLE
 WHERE REGEXP_LIKE(TEXT, 'Samsung|Apple|Nokia')