정규표현식 함수 REGEXP_SUBSTR Feat. CONNECT BY
REGEXP_SUBSTR(COLUMN, [REG_EXP], [START_INDEX], [GROUP_INDEX])
COLUMN : 컬럼명
REG_EXP : 정규표현식 [^@]+ : @ 기준으로 split
START_INDEX : 정규표현식을 검색할 문자열의 시작 INDEX 지정.
GROUP_INDEX : 해당 정규표현식으로 잘라진 그룹이 2개 이상이라면 INDEX 를 지정해 그룹을 선택할 수 있다.
SELECT REGEXP_SUBSTR('retriver@gmail.com', '[^@]+', 1, 1) AS EMAIL_ID -- 'r' 부터 검색
, REGEXP_SUBSTR('retriver@gmail.com', '[^@]+', 3, 1) AS EMAIL_ID_CUT -- 't' 부터 검색
, REGEXP_SUBSTR('retriver@gmail.com', '[^@]+', 1, 2) AS EMAIL_DOMAIN
FROM DUAL

[Study] 구분자(^)로 구분한 값들을 분리하여 가져오기
SELECT REGEXP_SUBSTR('0001^0002^0003','[^^]+', 1, 1) AS COL_1
, REGEXP_SUBSTR('0001^0002^0003','[^^]+', 1, 2) AS COL_2
, REGEXP_SUBSTR('0001^0002^0003','[^^]+', 1, 3) AS COL_3
FROM DUAL

[Study] Connect By 를 사용하여 list형태로 가져오기
SELECT REGEXP_SUBSTR('0001^0002^0003','[^^]+', 1, LEVEL) COL FROM DUAL
CONNECT BY REGEXP_SUBSTR('0001^0002^0003', '[^^]+', 1, LEVEL) IS NOT NULL

특정문자만 추출
SELECT A.TEST_NM, REGEXP_REPLACE(A.TEST_NM, '[^0-9,-]') AS TEST_TEL
FROM TEST A
TEST_NM | TEST_TEL
기업은행(1566-2566) | 1566-2566
국민은행(1599-9999) | 1599-9999