728x90
반응형
728x170
■ 구분자를 사용해 문자열을 분리하는 방법을 보여준다.
▶ 예제 코드 (SQL)
WITH SOURCE_TABLE AS
(
SELECT 1 ID, 'A|B|C' SOURCE_STRING FROM DUAL UNION ALL
SELECT 2 ID, 'B|C' SOURCE_STRING FROM DUAL UNION ALL
SELECT 3 ID, 'A|C' SOURCE_STRING FROM DUAL UNION ALL
SELECT 4 ID, 'A|B|C' SOURCE_STRING FROM DUAL UNION ALL
SELECT 5 ID, 'B|C' SOURCE_STRING FROM DUAL UNION ALL
SELECT 6 ID, 'B|C|D' SOURCE_STRING FROM DUAL
)
SELECT
A.ID
,B.SOURCE_ELEMENT
FROM SOURCE_TABLE A,
(
SELECT DISTINCT REGEXP_SUBSTR(C.SOURCE_ELEMENT, '[^|]+', 1, LEVEL) SOURCE_ELEMENT
FROM
(
SELECT REPLACE(WM_CONCAT(DISTINCT D.SOURCE_STRING), ',', '|') SOURCE_ELEMENT
FROM SOURCE_TABLE D
) C
CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(C.SOURCE_ELEMENT, '[^|]+', '')) + 1
) B
WHERE INSTR('|' || A.SOURCE_STRING || '|', '|' || B.SOURCE_ELEMENT || '|') > 0
ORDER BY A.ID, B.SOURCE_ELEMENT;
728x90
반응형
그리드형(광고전용)
'Database > Oracle' 카테고리의 다른 글
[DATABASE/ORACLE] LAST_DAY 함수 : 특정일 해당 월 마지막 날짜 구하기 (0) | 2015.05.17 |
---|---|
[DATABASE/ORACLE] NEXT_DAY 함수 : 특정일 다음 날짜 구하기 (0) | 2015.05.17 |
[DATABASE/ORACLE] ADD_MONTHS 함수 : 월 수 더하기 (0) | 2015.05.17 |
[DATABASE/ORACLE] 테이블 리스트 조회하기 (0) | 2015.05.11 |
[DATABASE/ORACLE] 암시적 커서 사용하기 (0) | 2015.05.11 |
[DATABASE/ORACLE] 구분자를 사용해 문자열 분리하기 (0) | 2015.05.11 |
[DATABASE/ORACLE] 구분자를 사용해 문자열 분리하기 (0) | 2015.05.11 |
[DATABASE/ORACLE] XMLAGG, XMLELEMENT 함수를 사용해 여러 행의 데이터를 한 컬럼에 결합하기 (0) | 2015.05.11 |
[DATABASE/ORACLE] WM_CONCAT 함수 : 사용해 여러 행의 데이터를 한 컬럼에 결합하기 (0) | 2015.05.11 |
[DATABASE/ORACLE] INSTR 함수 사용하기 (0) | 2015.05.11 |
댓글을 달아 주세요