IT/기타 Oracle SQL 특정 문자 기준으로 문자열 분리하기(행으로 분리)twofootdog 2021. 5. 26. 19:44 Oracle SQL을 작성하다 보면 특정 문자를 기준으로 문자열을 행(row)으로 분리해야 하는 경우가 종종 있다. 만약 테이블 컬럼의 데이터가 "10|20|30|40|50|" 인 경우, 문자 "|"를 기준으로 10~50으로 데이터를 분리(5개의 row) 하려면 아래와 같이 SQL을 작성하면 된다(아래 SQL에서는 테이블이 WITH절, 컬럼은 STR이고, 분리된 ROW 명이 CODE 다 ) 문자열 SQL
SQL 수행 결과 전체/Oracle 오라클 column to row (컬럼의 데이터를 여러개의 row로 가져오기)effortDev 2020. 2. 26. 14:15 - 컬럼을 여러개의 로우로 표현하기 테이블의 데이터를 보면 한 컬럼안의 구분자를 사용하여 여러개의 데이터를 저장하여 사용하는 테이블이 있다.
현재 LIST_COL 컬럼에는 한 컬럼안에 데이터가 ,(콤마)로 구분되어 코드값이 저장되어 있다. 1개의 로우로 표현된 컬럼 값을 ,(콤마)로 데이터를 분리하여 여러개의 ROW로 표현해보겠다. 1. , (콤마)로 구분되어 코드값을 여러개의 ROW로 추출하기
[결과]
이렇게 사용하면 여러개의 테이블에 필요한 데이터를 추출하고 싶을때 SUBQUERY를 사용하여 뽑아낼수 있다. 2. 응용하기 ( 데이터 리스트를 row로 표현하여 해당 데이터만 뽑아내기 )
임시로 A, B 테이블 데이터를 정의하고 A테이블에는 지역과 지역번호 데이터가 있고 B테이블에는 지역번호 데이터가 ,(콤마)로 구분되어 여러개 들어가 있다. [A 테이블]
[B 테이블]
A테이블과 B테이블을 조인하여 조현영의 지역번호에 해당하는 지역명을 추출하려면 REGEXP_SUBSTR 정규식을 사용해 한 컬럼에 저장된 리스트를 여러개의 row로 변환하여 in 조건절 안에 해당하는 데이터만 추출할 수 있는 것을 확인할 수 있다. [결과]
|