문자열 자르기 패턴 질문 입니다. 0 3 3,180

by 부랄큰타이거 [2014.03.04 11:07:38]


예를 들어 아래와 같은 문자열이 있습니다. 

XXXX,AAA,BB,CCCCC,D,EEE,FF

, 로 구분이 되고 있는 문자열 인데요... substr 함수를 이용하여 뒤에 EEE, FF만 별도로 갖고 오고 싶습니다. 

참고로 , 의 갯수는 6개 고정입니다. 

고수님께 요청 드립니다.

수고하세요.....
by 정영민 [2014.03.04 11:33:30]
--이런식으로 하면 원하는 값을 얻을수 있겠네요

SELECT
    MSG,
    SUBSTR(MSG, 1, INSTR(MSG, ',', 1, 1) - 1) AS MSG1,
    SUBSTR(MSG, INSTR(MSG, ',', 1, 1) + 1, INSTR(MSG, ',', 1, 2) - INSTR(MSG, ',', 1, 1) - 1) AS MSG2,
    SUBSTR(MSG, INSTR(MSG, ',', 1, 2) + 1, INSTR(MSG, ',', 1, 3) - INSTR(MSG, ',', 1, 2) - 1) AS MSG3,
    SUBSTR(MSG, INSTR(MSG, ',', 1, 3) + 1, INSTR(MSG, ',', 1, 4) - INSTR(MSG, ',', 1, 3) - 1) AS MSG4,
    SUBSTR(MSG, INSTR(MSG, ',', 1, 4) + 1, INSTR(MSG, ',', 1, 5) - INSTR(MSG, ',', 1, 4) - 1) AS MSG5,
    SUBSTR(MSG, INSTR(MSG, ',', 1, 5) + 1, INSTR(MSG, ',', 1, 6) - INSTR(MSG, ',', 1, 5) - 1) AS MSG6,
    SUBSTR(MSG, INSTR(MSG, ',', 1, 6) + 1) AS MSG7
FROM (SELECT 'XXXX,AAA,BB,CCCCC,D,EEE,FF' AS MSG FROM DUAL)

by DarkBee [2014.03.04 11:50:47]
SELECT REGEXP_SUBSTR ( col, '[^,]+', 1, 6 )
   , REGEXP_SUBSTR ( col, '[^,]+', 1, 7 )
 FROM (
     SELECT 'XXXX,AAA,BB,CCCCC,D,EEE,FF' COL FROM DUAL
)


SELECT REGEXP_REPLACE ( col, '^(.*),(.*,.*)$', '\2' )
 FROM (
     SELECT 'XXXX,AAA,BB,CCCCC,D,EEE,FF' COL FROM DUAL
)

by 부랄큰타이거 [2014.03.04 12:31:02]
INSTR 함수나 정규식을 쓰면 되는군요....
흠냐...감사합니다.

오늘 또 한수 배우고 갑니다. 

복받으세요...정영민님 DarkBee 님
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입