정규식을 이용한 쿼리 질문을 드립니다. 1 5 3,137

by 서른살... 정규식 [2012.06.20 09:35:13]



안녕하세요.
정규식을 관련하여 내용을 추출할려고 합니다.
그래서 고수님들의 도움을 요청드립니다.

가령
컬럼에

(홍길동)@ataqch @adfqer(아무개) 하하하하 @dgqec(사장님)

이런형태로 값이 들어 있을 경우
쿼리를 통해서는 어떻게 추출을 해야 하는지요.
여기에서 추출하고 싶은 값은
@ataqch
@adfqer
@dgqec

이 3개의 값입니다.

문의를 드립니다~
by 마농 [2012.06.20 10:18:59]
WITH t AS
(
SELECT '(홍길동)@ataqch @adfqer(아무개) 하하하하 @dgqec(사장님)' v FROM dual
)
SELECT v
     , lv
     , REGEXP_SUBSTR(v, '@[^@ (]+', 1, lv) x
  FROM t
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 9)
 WHERE lv <= LENGTH(v) - LENGTH(REPLACE(v, '@'))
;

by 제로 [2012.06.20 10:51:34]
 
WITH t AS
(
SELECT '(홍길동)@ataqch @adfqer(아무개) 하하하하 @dgqec(사장님)' v FROM dual
)
SELECT REGEXP_SUBSTR(v, '@[a-z]+', 1, LEVEL)
   , REGEXP_REPLACE(v, '[^@a-z]')
FROM t
CONNECT BY LEVEL <= LENGTH(v) - LENGTH(REPLACE(v, '@'))
;

by 서른살... [2012.06.20 12:12:11]

마농님 리플 감사합니다.
하나더 여쭈어 볼려고 합니다.
우선 위에 형태는 그나마 패턴이 조금이라도 있을때는 괜찮지만 글 내용자체가 패턴이 없을때는 어떻게 해야 하는지 궁금합니다.;;

가령

컬럼의 값이

즐거움을 주셔서 감사합니다  @ABC5415 @aqdisthis_0

이렇게 있는 케이스도 있으며

@rhdi79(아무개)  오늘 감사한마디에 정말 많은 것을 깨닫게 되었습니다.

이런 값도 있으며

홍길동 (@pure0924) 함께해요 (@eulgu)  기운이 나는 소중한 약을 주셔서 감사합니다. 산행 잘다녀올께요 ~ 라라 @agqe_thanks

이런값들도 있을경우엔 어떻게 해야 할지요..

알려주신 방법으로 해보았으나 저러 변칙으로 들어 가 있는 값에서 문제가 발생하더군요...;;ㅠㅠ

다시 한번 더 도움을 요청합니다.

by 마농 [2012.06.20 12:49:55]
 괄호닫기 기호만 하나 더 추가하시면 될 듯 합니다만.
'@[^@ ()]+'

by 서른살... [2012.06.21 16:35:23]

감사합니다!!!
잘 해결이 되었네요~
도움주신
마농님, 제로님 감사합니다.^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입