SQLite에서 쉼표로 구분된 값 분할: CTE(공용 테이블 표현식) 접근 방식
데이터 관리 영역에서 분할된 쉼표로 구분된 값(CSV)이 자주 발생합니다. 널리 사용되는 경량 데이터베이스 시스템인 SQLite의 경우 전용 substring() 함수가 없기 때문에 이 작업이 다른 SQL 환경만큼 간단하지 않을 수 있습니다. 그러나 CTE(공용 테이블 표현식)를 활용하는 대체 솔루션이 있습니다.
다음 시나리오를 고려해 보겠습니다. 쉼표로 구분된 문자열이 포함된 "Category" 열이 있는 테이블이 있고 추출하려고 합니다. 각 문자열의 개별 값을 별도의 행으로 변환합니다.
CTE는 단일 쿼리 내에서 추가로 참조하고 조작할 수 있는 명명된 임시 결과 집합입니다. 우리의 경우 CTE를 사용하여 CSV 문자열을 재귀적으로 분할하고 추출된 값을 새 테이블에 저장할 수 있습니다. 쿼리는 다음과 같습니다.
WITH split(word, csv) AS ( -- 'initial query' SELECT '', 'Auto,A,1234444'||',' -- terminate with ',' indicating csv ending -- 'recursive query' UNION ALL SELECT substr(csv, 0, instr(csv, ',')), -- each word contains text up to next ',' substr(csv, instr(csv, ',') + 1) -- next recursion parses csv after this ',' FROM split -- recurse WHERE csv != '' -- break recursion once no more csv words exist ) SELECT word FROM split WHERE word!=''; -- filter out 1st/last rows
이 쿼리는 instr() 함수를 사용하여 CSV 문자열을 분할하여 첫 번째 쉼표를 찾고, 쉼표 앞의 하위 문자열을 추출하고, 자신을 재귀적으로 호출하여 나머지 부분에서 프로세스를 반복합니다. 문자열의. 쉼표가 더 이상 남지 않으면 재귀가 종료됩니다.
결과 출력에는 원본 CSV 문자열에서 추출된 개별 값이 행으로 구성되어 포함됩니다.
Auto A 1234444
이 접근 방식은 강력하고 SQLite에서 쉼표로 구분된 값을 분할하는 유연한 방법으로, 데이터 조작 작업에 유용한 도구입니다.
위 내용은 공통 테이블 표현식(CTE)을 사용하여 SQLite에서 쉼표로 구분된 값을 어떻게 분할할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!