본문 바로가기
너알나알/오라클[Oracle]

[오라클]1개의 ROW값을 N개의 ROW로 조회(CSV DATA)

by ToBeIsFree 2024. 3. 20.

어제 포스팅하였던 내용( [오라클]N개의 ROW의 값을 1개의 ROW로 조회 )의 반대 상황이 생깁니다

CSV DATA와 같이 어떤 구분자 (ex, ‘,’ )로 이루어진 하나의 String을 기준으로 N Row로 만들어서 조회해야 할 때

‘CONNET BY’와 ‘REGEXP-SUBSTR’ 함수를 조합하여 구현할 수 있습니다

‘ , ‘ 로 구분된 문자열을 N개의 ROW로 분리
WITH T AS (
  SELECT 'ㄱ,ㄴ,ㄷ,ㄹ' AS CSV_STRING FROM DUAL
)
SELECT TRIM(REGEXP_SUBSTR(CSV_STRING, '[^,]+', 1, LEVEL)) AS VALUE
FROM T
CONNECT BY REGEXP_SUBSTR(CSV_STRING, '[^,]+', 1, LEVEL) IS NOT NULL

 

정규식 패턴(^ : 문자열 또는 줄의 시작)을 사용하여 CSV_STRING을 구분하여 원하는 결과값을 조회 할 수 있습니다

콤마(,) 대신 다른 구분자로 되어 있어도 사용 할 수 있습니다

댓글