REGEXP_SUBSTR 정규식 문의 0 5 1,407

by 고수로. [Oracle 기초] [2017.09.07 11:14:06]


안녕하세요. 오랫만에 문의 글을 드립니다.

현재 정규식으로 만들어진 쿼리의 내용이 정확하게 이해가 안되어..도움을 요청 드립니다.

문의 하고자 하는 쿼리는 아래와 같습니다.

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과는 좀 다른것 같아...쉽게 설명을 부탁 드립니다.

감사합니다.

 

 

 

 

by 부쉬맨 [2017.09.07 11:26:29]
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으로 다 나오는형태

 


by 마농 [2017.09.07 11:32:04]

검색시작문자번호, 검색된순서
즉, 1, 1 은 첫번째 문자부터 검색하여 첫번째 검색된걸 가져오라는 뜻.


by 고수로. [2017.09.07 11:32:59]

부쉬맨, 마농님 친절한 답변 감사합니다.

많은 도움이 되었습니다. 좋은 하루 되세요


by jkson [2017.09.07 11:33:58]

사용법은 메뉴얼을 보시는 게 가장 정확합니다. 4번째 파라메터 이후에도 옵션이 있으니 확인해보시구요.

http://docs.oracle.com/database/122/SQLRF/REGEXP_SUBSTR.htm#SQLRF06303


by 고수로. [2017.09.07 13:02:01]

by jkson 님 참고 하겠습니다. 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입