database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40041 게시물 읽기
No. 40041
연속된 동일문자열 찾기
작성자
햇살좋은오후(sunshinelee)
작성일
2013-03-07 13:33
조회수
8,093

안녕하세요. sql 좀 해결해 주세요.

TEMP라는 테이블이 있다고 가정할때 컬럼중 연속된 동일문자열을 표시.
테이블 조회 쿼리는 아래와 같습니다.
WITH TEMP AS(       
        SELECT 'AAAB' C FROM DUAL UNION ALL
        SELECT 'KAAB' C FROM DUAL UNION ALL
        SELECT 'ABA' C FROM DUAL
       )
SELECT *
  FROM TEMP;
       
C컬럼에 나오는 문자열에서 연속된 동일문자열만 나오게 SQL을 만들고 싶은데요.
결과는 이렇게 나오면 됩니다.  
AAAB --> AAA
KAAB --> AA

감사합니다.

이 글에 대한 댓글이 총 4건 있습니다.

예전에 마농님께서 작성한 쿼리입니다. 참고하세요

-- 정규식을 이용한 해법
SELECT c
-- 1단계. 특수문자제거 : 숫자와 알파벳이 아닌것 지움
, REGEXP_REPLACE(c, '[^0-9A-Za-z]') c1
-- 2단계. 연속문자 추출
-- "\1"은 괄호안의 .쩜을 의미하며, 쩜은 모든 문자를 의미함
, REGEXP_SUBSTR(REGEXP_REPLACE(c, '[^0-9A-Za-z]'), '(.)\1') c2
-- 3단계. 원하는 결과
CASE WHEN REGEXP_LIKE(REGEXP_REPLACE(c, '[^0-9A-Za-z]'), '(.)\1')
THEN '중복대상' ELSE '비대상' END c3
FROM t
;

마농(manon94)님이 2013-01-16 12:48:37에 작성한 댓글입니다.

 

모모(momo5813)님이 2013-03-07 14:32에 작성한 댓글입니다.

마농님 쿼리는 봤는데요..그 쿼리대로 하면 AAAB가 AA로 나옵니다.

제가 원하는건 연속된 동일문자열 AAA이거든요.

이렇게 동일문자열을 찾는 함수가 아무리 찾아봐도 없네요 ㅠㅠ

 

햇살좋은오후(sunshinelee)님이 2013-03-07 14:37에 작성한 댓글입니다.
이 댓글은 2013-03-07 14:39에 마지막으로 수정되었습니다.

WITH t AS
(
SELECT 'AAAB' c FROM dual
UNION ALL SELECT 'KAAB'   FROM dual
UNION ALL SELECT 'ABA'    FROM dual
UNION ALL SELECT 'ABBACC' FROM dual
)
SELECT c
     , REGEXP_SUBSTR(c, '(.)(\1)+') v1 -- 첫 연속문자열만 추출
     , REGEXP_REPLACE(c, '((.)(\2)+)|.', '\1') v2 -- 모든 연속문자열 추출
  FROM t
;

마농(manon94)님이 2013-03-07 15:34에 작성한 댓글입니다.
이 댓글은 2013-03-07 16:36에 마지막으로 수정되었습니다.

마농님..감사드립니다.

어제 오늘 이틀동안 고민하던 부분을 한방에 해결해주시는군요.

햇살좋은오후(sunshinelee)님이 2013-03-07 15:43에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40045B테이블값을 A테이블로 업데이트 조건같은경우만.. [2]
겜블러
2013-03-12
5328
40043가로를 분리 하여 세로로 부탁드립니다. [5]
감사합니다
2013-03-11
7702
40042case when 에서 결합연산자 사용질문입니다. [3]
서기라
2013-03-08
5883
40041연속된 동일문자열 찾기 [4]
햇살좋은오후
2013-03-07
8093
40040BLOB 입력처리 C++소스 문의
정현도
2013-03-06
5340
40039프로시져로 생성을 해야할까요. [1]
새하정
2013-03-06
5409
40038합계 금액을 뽑을려구 합니다. [2]
쫑군
2013-03-05
5581
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다