> 데이터 베이스 > MySQL 튜토리얼 > 공통 테이블 표현식을 사용하여 SQLite에서 쉼표로 구분된 값을 어떻게 쉽게 분할할 수 있습니까?

공통 테이블 표현식을 사용하여 SQLite에서 쉼표로 구분된 값을 어떻게 쉽게 분할할 수 있습니까?

DDD
풀어 주다: 2025-01-03 00:11:42
원래의
594명이 탐색했습니다.

How Can I Easily Split Comma-Separated Values in SQLite Using Common Table Expressions?

SQLite에서 쉼표로 구분된 값을 쉽게 분할하는 방법 만들기

소개

쉼표로 구분된 값에서 개별 값 추출 문자열은 데이터 분석의 일반적인 요구 사항입니다. SQLite에는 SQL의 SubString() 함수에 해당하는 간단한 함수가 없으므로 이 작업이 다소 까다롭습니다. 하지만 공통 테이블 표현식(CTE)의 도움으로 효율적이고 직관적인 솔루션을 만들 수 있습니다.

해결책: CTE 사용

CTE를 사용하면 임시 결과 세트를 정의하고 이름을 지정합니다. CTE 내의 재귀를 활용하면 쉼표로 구분된 문자열을 반복적으로 구문 분석하여 각 값을 한 번에 하나씩 추출할 수 있습니다.

이 경우 CTE 선언은 다음과 같습니다.

WITH split(word, csv) AS (
  -- 'initial query' (see SQLite docs linked above)
  SELECT 
    '', 
    'Auto,A,1234444'||','
  
  -- 'recursive query'
  UNION ALL SELECT
    substr(csv, 0, instr(csv, ',')), 
    substr(csv, instr(csv, ',') + 1)
  FROM split
  WHERE csv != ''
)
로그인 후 복사

'초기 쿼리'에서는 CTE의 재귀 부분에 대한 시작점을 만듭니다. '단어'에 대해 빈 문자열을 지정하고 추가 쉼표와 함께 쉼표로 구분된 문자열을 추가하여 CSV의 끝을 나타냅니다.

'재귀 쿼리'에서 마법이 일어납니다. instr() 함수를 사용하여 'csv' 필드에서 첫 번째 쉼표의 위치를 ​​찾습니다. 그런 다음 substr()을 사용하여 'csv' 필드를 '단어'와 나머지 'csv' 부분으로 분할합니다.

재귀를 사용하여 더 이상 쉼표가 남지 않을 때까지 나머지 'csv' 부분을 계속 분할합니다. , 쉼표로 구분된 모든 값을 효과적으로 추출합니다.

분할 검색 값

CTE가 분할 값을 정의하면 간단한 쿼리를 사용하여 이를 검색할 수 있습니다.

SELECT word FROM split 
WHERE word!='';
로그인 후 복사

WHERE 절은 초기 및 분할 값을 나타내는 빈 문자열을 필터링합니다. 터미널 값.

출력 및 이점

쿼리 출력은 다음과 같습니다.

Auto
A
1234444
로그인 후 복사

이 접근 방식은 여러 가지 이점을 제공합니다.

  • 재귀 CTE를 사용합니다. 분할의 반복적 특성을 처리하는 우아하고 효율적인 방법입니다.
  • 출력은 이해하고 작업하기 쉽습니다. with.
  • 더 복잡하고 오류가 발생할 수 있는 교체() 및 Trim() 함수를 사용할 필요가 없습니다.

위 내용은 공통 테이블 표현식을 사용하여 SQLite에서 쉼표로 구분된 값을 어떻게 쉽게 분할할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿