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 중국어 웹사이트의 기타 관련 기사를 참조하세요!