Oracle SQL을 작성하다 보면 특정 문자를 기준으로 문자열을 행(row)으로 분리해야 하는 경우가 종종 있다.
만약 테이블 컬럼의 데이터가 "10|20|30|40|50|" 인 경우, 문자 "|"를 기준으로 10~50으로 데이터를 분리(5개의 row) 하려면 아래와 같이 SQL을 작성하면 된다(아래 SQL에서는 테이블이 WITH절, 컬럼은 STR이고, 분리된 ROW 명이 CODE 다 )
문자열
SQL
WITH TMP AS (SELECT '10|20|30|40|50|' AS STR FROM DUAL)
SELECT
REGEXP_SUBSTR(TMP.STR, '[^|]+', 1, LEVEL) CODE
FROM
DUAL, TMP
CONNECT BY REGEXP_SUBSTR(TMP.STR, '[^|]+', 1, LEVEL) IS NOT NULL;
SQL 수행 결과
'IT > 기타' 카테고리의 다른 글
ORACLE BLOB 데이터 조회 (0) | 2022.03.03 |
---|---|
Oracle SQL LISTAGG 함수로 행(row) 합치기 (0) | 2021.05.28 |
[에러 해결]제니퍼가 설정된 WAS(Tomcat)에 배포된 어플리케이션의 인코딩이 깨지는 문제 (0) | 2021.02.05 |
npm install 시 npm ERR! cb.apply is not a function 에러 해결방법 (1) | 2021.01.21 |
Oracle 테이블 컬럼 정보 조회 쿼리(컬럼명, PK, FK, Nullable) (1) | 2020.11.20 |
댓글