집 >데이터 베이스 >MySQL 튜토리얼 >중복 행을 생성하지 않고 Oracle에서 쉼표로 구분된 값을 효율적으로 분할하려면 어떻게 해야 합니까?
Oracle 테이블의 여러 쉼표로 구분된 값을 고유 행으로 분할
oracle에서는 쉼표로 구분된 값을 여러 행으로 분할하는 것이 일반적입니다. 정규식과 CONNECT BY 절을 사용합니다. 그러나 자주 발생하는 문제 중 하나는 중복 행이 생성되는 것입니다. 이는 각 행에 쉼표로 구분된 문자열이 포함된 여러 행이 있는 테이블에서 특히 문제가 될 수 있습니다.
이 문제를 해결하려면 수정된 쿼리를 사용하여 중복 행을 효과적으로 제거하면서 값을 분할할 수 있습니다.
WITH CTE AS (SELECT 'a,b,c,d,e' temp, 1 slno FROM DUAL UNION SELECT 'f,g' temp, 2 slno FROM DUAL UNION SELECT 'h' temp, 3 slno FROM DUAL) SELECT TRIM(REGEXP_SUBSTR(temp, '[^,]+', 1, level)), slno FROM CTE CONNECT BY level <= REGEXP_COUNT(temp, '[^,]+') AND PRIOR slno = slno AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL
이 쿼리에는 두 가지 주요 수정 사항이 도입됩니다.
결과적으로 이 쿼리는 고유한 행 식별을 유지하고 중복 행이 생성되는 것을 방지하면서 쉼표로 구분된 값을 여러 행으로 효과적으로 분할합니다.
위 내용은 중복 행을 생성하지 않고 Oracle에서 쉼표로 구분된 값을 효율적으로 분할하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!