반복 문자열 하나로 줄이는 정규표현식..? 1 5 5,330

by 디케이 [2013.05.07 17:19:12]


문자열에서 반복되는 문자를 한 문자로 나타낼려고 합니다.

WITH t AS(
  SELECT 'aabbcc' str FROM dual
UNION ALL SELECT '홍길길길동'  FROM dual
UNION ALL SELECT 'aaabbbcccbbb'  FROM dual
UNION ALL SELECT 'nnnnoooo11111'  FROM dual
)

결과셋
------------
abcb
abc
no1
홍길동

정규표현식으로 표현할 수 있을까요?
by 허승호 [2013.05.07 17:35:41]
WITH t AS(
 SELECT 'aabbcc' str FROM dual
UNION ALL SELECT '홍길길길동' FROM dual
UNION ALL SELECT 'aaabbbcccbbb' FROM dual
UNION ALL SELECT 'nnnnoooo11111' FROM dual
)
SELECT REGEXP_REPLACE(STR ,'(.)\1+' ,'\1') FROM T

by 마농 [2013.05.07 17:39:54]
* 는 0개 이상 반복을 의미합니다.
REGEXP_REPLACE(str, '(.)(\1)*', '\1')
+ 는 1개 이상 반복을 의미합니다.

by 디케이 [2013.05.07 17:41:31]
감사합니다...

역시 정규식으로 가능하네요.. 많은 도움되었습니다.

by 디케이 [2013.05.07 17:44:25]

답글 다는동안 마농님이 정리해주셨네요.

거듭 감사합니다.

by 허승호 [2013.05.07 17:49:25]

하다보니 생각나서 다시 수정해서 올려 놓았는데 어느덧 마농님께서 역시^^ 고수시네요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입