안녕하세요. 정규식을 관련하여 내용을 추출할려고 합니다. 그래서 고수님들의 도움을 요청드립니다.
가령 컬럼에
(홍길동)@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() 버튼을 클릭하여 작성 하시면 됩니다.