중복 없이 여러 쉼표로 구분된 값을 여러 Oracle 테이블 행으로 분할
Oracle의 CONNECT BY를 사용하여 쉼표로 구분된 데이터를 여러 행으로 분할하는 경우 및 정규식을 사용하면 중복된 행이 나타날 수 있습니다. 다음은 중복 결과를 생성한 원래 쿼리입니다.
WITH CTE AS ( SELECT 'a,b,c,d,e' temp, 1 slno FROM DUAL UNION SELECT 'f,g', 2 from dual UNION SELECT 'h', 3 FROM DUAL ) SELECT TRIM(REGEXP_SUBSTR(TEMP, '[^,]+', 1, LEVEL)), SLNO FROM CTE CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(temp, '[^,]+')) + 1
중복 행 문제를 해결하기 위해 쿼리를 다음과 같이 수정했습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!