간단한 문자열제거 질문드립니다. 0 11 2,009

by 클라나드 [2013.09.17 11:12:32]


WITH T1 AS
(            
SELECT 'ABCD.JSP' FROM dual
UNION ALL SELECT '<DIV>ABCDE.JSP</DIV>'c FROM dual
)
SELECT * FROM t1;

위셀렉트로 조회하면
ABCD.JSP
<DIV>ABCD.JSP</DIV>
두결과가 나오는데요

ABCD
ABCD

로 나오게 하려면 어떻게 해야할까요
INSTR, SUBSTR, LENGTH 사용해서 짱구 굴려보는데 
답이안나오네요 에휴..

도움부탁드립니다.(__)꾸벅
by 신이만든짝퉁 [2013.09.17 11:23:15]
WITH T1 AS
(           
SELECT 'ABCD.JSP' str FROM dual
UNION ALL SELECT '<DIV>ABCDE.JSP</DIV>' str FROM dual
)
SELECT regexp_substr(str, '[a-zA-Z]+\.[a-zA-Z]+') str 
  FROM t1
;

이렇게 해보세요~

by 신이만든짝퉁 [2013.09.17 11:50:30]
WITH T1 AS
(            
SELECT 'ABCD.JSP' str FROM dual
UNION ALL SELECT '<DIV>ABCDE.JSP</DIV>' str FROM dual
)
SELECT substr(regexp_substr(str, '([a-zA-Z]+)\.', 1),1, 4) str  
  FROM t1
;

원하시는 결과는 이게 맞을 것 같습니다.

by 클라나드 [2013.09.17 11:53:03]
무슨이유인지모르겠는데

regexp_substr
함수쓰면 오류 납니다.

오라클 11g 입니다.

열명이 부적합합니다라고 나옵니다.

왜그럴까요

by 윤 [2013.09.17 11:32:37]
--짝퉁님 배워봅니다 _ _) (꾸벅) ~감사합니다 --정규식을 배우는것도 있나요?
 
WITH T1 AS
(   
SELECT 'ABCD.JSP'a FROM dual
UNION ALL SELECT '
ABCDE.JSP' FROM dual ) SELECT regexp_substr (A, '[^.]+')a FROM ( select regexp_substr(a, '[a-zA-Z]+\.[a-zA-Z]+')a from t1);

by 아발란체 [2013.09.17 12:36:33]

//윤

정규식은 거의 표준이라고 생각하시면 됩니다.

자바스크립트 정규식을 마스터 하시면,
오라클 정규식, C정규식, 자바 정규식, 펄 정규식, 텍스트 에디터(EDITPLUS) 정규식를
마스터 했다고 볼 수 있습니다.

정규식을 이용한 검색이나 치환 방법이 다 똑같습니다.


by 윤 [2013.09.17 13:18:08]
아발란체님 감사합니다 ~ㅎ 아직 섯불리 건들여보긴 두렵네요 ..
정규식 궁굼증 자극이 심하여 ㅋ~ 검색해서 좀 알아보며 공부해두어야겠네요 
신경써주셔서 다시한번 감사합니다. ~

by 태우현 [2013.09.17 11:32:45]
WITH T1 AS
(
SELECT 'ABCD.JSP' filename FROM DUAL
UNION ALL
SELECT '<DIV>ABCDE.JSP</DIV>' FROM DUAL
)
select SUBSTR(filename, REGEXP_INSTR(filename, '[a-zA-Z]+\.[a-zA-Z]')
                      ,
REGEXP_INSTR(filename, '\.') - 
                          REGEXP_INSTR(filename, '[a-zA-Z]+\.[a-zA-Z]')) as filename
FROM t1;

여기에서 파일명 제약조건에 따라 정규표현식에 추가하시면 될것 같습니다.

by 클라나드 [2013.09.17 11:37:46]
제가 초보라 그러는데 
regexp_substr
열명이 부적합합니다.
라는 오류 납니다.
왜이러는지..


by 마농 [2013.09.17 11:41:46]
위 두개의 데이터가 전체 모든 케이스를 대표하는 데이터인가요?
다른 유형의 데이터도 존재하는지 궁금하네요.
확장자는 .JSP 만 있는지 다른 것도 있는지? 확장자가 없는것은 없는지?
<DIV> 테그 외에 다른것은 없는지? 등등...
이런 류의 문제는 가능한 모든 케이스를 검토해야 합니다.

by 클라나드 [2013.09.17 11:51:46]
정확한데이터는 저도 잘모르겠네요 ㅠㅠ
아유
저도 답답하네요..

by 클라나드 [2013.09.17 11:51:00]
WITH T1 AS
(            
SELECT 'ABCDE.JSP' AA FROM dual
UNION ALL SELECT '<DIV>ABCDE.JSP</DIV>' AA FROM dual
)
SELECT
SUBSTR(SUBSTR(AA, 0, INSTR(AA, '.')-1),INSTR(TO_CHAR(AA), '>',  1)+1) AS BB 
FROM t1;


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