Oracle 테이블에서 쉼표로 구분된 값을 효율적으로 구문 분석
쉼표로 구분된 값(CSV)이 포함된 대규모 데이터 세트를 처리하려면 효율적인 데이터 분석 및 조작을 위해 이러한 값을 Oracle 테이블 내의 개별 열로 분할해야 하는 경우가 많습니다. 정규 표현식은 REGEXP_SUBSTR
함수를 통해 솔루션을 제공하지만 [^,]
표현식을 사용하는 일반적인 접근 방식은 신뢰할 수 없습니다.
이는 null 또는 빈 값이 포함된 CSV 데이터를 처리할 때 특히 그렇습니다. Null 또는 빈 문자열에 관계없이 요소를 정확하게 추출하려면 보다 강력한 정규식이 필요합니다. 다음 표현을 추천합니다:
<code class="language-sql">(.*?)(,|$)</code>
이 표현식은 캡처 그룹을 활용하여 선행 또는 후행 쉼표를 포함하여 원하는 요소를 정확하게 식별합니다. REGEXP_SUBSTR
내에 캡처 그룹 인덱스(1)를 지정하면 요소의 값을 안정적으로 검색하여 채워진 값과 null 값을 모두 올바르게 처리할 수 있습니다.
다음 예시 쿼리를 고려해보세요.
<code class="language-sql">SELECT ROW_NUM, REGEXP_SUBSTR(VAL, '(.*?)(,|$)', 1, 1, NULL, 1) AS VAL1, REGEXP_SUBSTR(VAL, '(.*?)(,|$)', 1, 2, NULL, 1) AS VAL2 FROM ( SELECT ROWNUM AS ROW_NUM, '1.25, 3.87, 2' AS VAL FROM dual UNION ALL SELECT ROWNUM, '5, 4, 3.3' FROM dual )</code>
이 쿼리는 "VAL" 열의 쉼표로 구분된 값을 두 개의 새로운 열인 "VAL1"과 "VAL2"로 분할하는 동시에 null 또는 빈 항목이 있어도 데이터 무결성을 유지하는 방법을 보여줍니다. 출력에는 분리된 값이 명확하게 표시됩니다. 샘플 데이터를 생성하기 위해 ROWNUM
및 UNION ALL
를 사용한다는 점에 유의하세요. 이는 원래 예제보다 더 표준적인 접근 방식입니다.
위 내용은 쉼표로 구분된 값을 Oracle 테이블 열로 안정적으로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!