집 >데이터 베이스 >MySQL 튜토리얼 >Oracle에서 쉼표로 구분된 문자열을 여러 행으로 분할하는 방법은 무엇입니까?
오라클에서 쉼표로 구분된 문자열을 여러 줄로 나누기
쉼표로 구분된 문자열을 여러 행으로 분할하는 것은 Oracle Database의 일반적인 데이터 전처리 및 분석 작업입니다. 이를 수행하는 방법은 여러 가지가 있지만 간단하고 효과적인 한 가지 방법을 살펴보겠습니다.
오라클의 정규식을 활용하고 기능별로 연결하는 것도 한 가지 방법입니다. 각 레코드에 쉼표로 구분된 오류가 포함되어 있는 다음 표를 살펴보세요.
名称 | 项目 | 错误 |
---|---|---|
108 | test | Err1, Err2, Err3 |
109 | test2 | Err1 |
우리의 목표는 각 오류를 별도의 줄로 추출하여 다음과 같은 결과를 얻는 것입니다.
名称 | 项目 | 错误 |
---|---|---|
108 | test | Err1 |
108 | test | Err2 |
108 | test | Err3 |
109 | test2 | Err1 |
이를 위해 계층적 쿼리와 regexp_substr을 사용하여 오류 발생 횟수에 따라 각 오류를 추출합니다. 다음 쿼리는 이 접근 방식을 보여줍니다.
<code class="language-sql">with temp as ( select 108 Name, 'test' Project, 'Err1, Err2, Err3' Error from dual union all select 109, 'test2', 'Err1' from dual ) select distinct t.name, t.project, trim(regexp_substr(t.error, '[^,]+', 1, levels.column_value)) as error from temp t, table(cast(multiset(select level from dual connect by level <= length(regexp_replace(t.error, '[^,]+')) + 1) as sys.OdciNumberList)) levels order by name</code>
이 쿼리는 쉼표를 사용하여 문자열 길이(regexp_replace)를 바꾸고 계층적 쿼리 메커니즘을 사용하여 일련의 다양한 수준을 생성합니다. 각 수준은 쉼표로 구분된 문자열로 오류 발생 횟수를 나타냅니다. 그런 다음 regexp_substr 함수는 발생 횟수를 기준으로 오류를 추출하고 최종 결과 세트에는 원하는 출력이 포함됩니다.
이 방법은 Oracle 10g 이상에서 쉼표로 구분된 문자열을 여러 줄로 분할하는 간단하고 효율적인 방법을 제공합니다. 이는 Oracle의 강력한 문자열 조작 기능과 계층적 쿼리 기능을 활용하여 필요한 데이터 변환을 달성합니다.
위 내용은 Oracle에서 쉼표로 구분된 문자열을 여러 행으로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!