안녕하세요. 오랫만에 문의 글을 드립니다.
현재 정규식으로 만들어진 쿼리의 내용이 정확하게 이해가 안되어..도움을 요청 드립니다.
문의 하고자 하는 쿼리는 아래와 같습니다.
SELECT REGEXP_SUBSTR (COL_1,
'.{7}-WD-.-...-.{7}',
1,
1)
FROM TEST_TABLE;
우선 제가 위 내용을 이해하는 바는, COL_1 이라는 값중,
-WD-.-...- 해당 문자를 포함하고, 해당 문자열 앞 뒤에 7개의 문자열이 포함된 자료를 Substr 을 한다라는 의미로 이해를
하고 있는데요.
즉, " 123456789-WD-.-...-123456789A " 이런식의 문자가 있다라면..
그뒤에 있는 1, 1 빨간 음영표기된 부분에 대해 정확히 인지가 안되네요..
앞의 1을 2로 변경 또는 3으로 변경해도 값이 나오고 있는데..
일반 Substr과는 좀 다른것 같아...쉽게 설명을 부탁 드립니다.
감사합니다.
with t(a) as ( select '123456789-WD-.-...-123456789A' from dual union all select '123456789-WD-.-...-123456789A-WD-.-...-' from dual union all select '123456789-WD-.-...-123456789A-WD-.-...-111111-WD-.-...-' from dual ) SELECT REGEXP_SUBSTR (a,'-WD-.-...-',1,1) ,REGEXP_SUBSTR (a,'-WD-.-...-',1,2) ,REGEXP_SUBSTR (a,'-WD-.-...-',1,3) FROM t; 몇번째에 있는 것을 자르겠다라는 의미로 보시면됩니다. 1번 형태는 조건으로 생성된부분이 1개만 있으니깐 1,1 2번 형태는 조건으로 생성된부분이 2개만 있으니 1,2 나오는형태 3번 형태는 조건으로 생성된부분이 3개만 있으니깐 1,3으로 다 나오는형태
사용법은 메뉴얼을 보시는 게 가장 정확합니다. 4번째 파라메터 이후에도 옵션이 있으니 확인해보시구요.
http://docs.oracle.com/database/122/SQLRF/REGEXP_SUBSTR.htm#SQLRF06303