> 데이터 베이스 > MySQL 튜토리얼 > SQL에서 구독 번호의 단일 열을 여러 열로 분할하려면 어떻게 해야 합니까?

SQL에서 구독 번호의 단일 열을 여러 열로 분할하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2024-12-25 20:39:14
원래의
640명이 탐색했습니다.

How Can I Split a Single Column of Subscription Numbers into Multiple Columns in SQL?

단일 열을 여러 열로 나누기

이 문제는 추가 열을 생성하기 위해 테이블 ​​열의 데이터를 조작하는 것과 관련이 있습니다. 원래 열은 구독 번호를 단일 값으로 저장합니다. 우리의 임무는 이러한 구독 번호의 다양한 부분을 추출하여 여러 열에 배포하는 것입니다.

창의적인 접근 방식에는 문자열 조작과 XML 처리를 결합하여 활용하는 것이 포함됩니다. 작동 방식은 다음과 같습니다.

1단계: 구독 번호를 XML 구조로 변환

구독 번호의 모든 공백을 대시로 바꾼 다음 교체() 함수를 사용하여 대시를 변환합니다. §§Split§§과 같이 특수 구분 기호로 사용하세요. 이를 통해 변환된 숫자를 XML 구조로 볼 수 있습니다.

replace(replace(subscription_number, ' ', '-'), '-', '§§Split§§')
로그인 후 복사

변환된 숫자는 다음과 같습니다.

<x>SC-5-1395-174-25P</x>
로그인 후 복사

2단계: XML 구조에서 값 추출

Cast() 함수를 사용하여 변환된 숫자를 XML 태그로 묶은 다음 xDim.value() 함수를 사용하여 개별 부분을 추출합니다. 예를 들어, 첫 번째 부분(SC)을 얻으려면 다음을 사용합니다.

ltrim(rtrim(xDim.value('/x[1]', 'varchar(max)')))
로그인 후 복사

3단계: 추출된 값을 새 열에 할당

교차 적용을 사용하여 추출된 값을 다음에 할당합니다. 결과 세트의 새 열. 예는 다음과 같습니다.

Select A.subscription_number,
       B.Pos1 as Col1,
       B.Pos2 as Col2,
       B.Pos3 as Col3,
       B.Pos4 as Col4,
       B.Pos5 as Col5,
       B.Pos6 as Col6,
       B.Pos7 as Col7
From table A
Cross Apply (
    Select Pos1 = ltrim(rtrim(xDim.value('/x[1]', 'varchar(max)')))
          , Pos2 = ltrim(rtrim(xDim.value('/x[2]', 'varchar(max)')))
          , Pos3 = ltrim(rtrim(xDim.value('/x[3]', 'varchar(max)')))
          , Pos4 = ltrim(rtrim(xDim.value('/x[4]', 'varchar(max)')))
          , Pos5 = ltrim(rtrim(xDim.value('/x[5]', 'varchar(max)')))
          , Pos6 = ltrim(rtrim(xDim.value('/x[6]', 'varchar(max)')))
          , Pos7 = ltrim(rtrim(xDim.value('/x[7]', 'varchar(max)')))
    From (
        Select Cast('<x>' + replace((Select replace(replace(A.subscription_number, ' ', '-'), '-', '§§Split§§') as [*] For XML Path('')), '§§Split§§', '</x><x>') + '</x>' as xml) as xDim
    ) as A
) B
로그인 후 복사

이 접근 방식을 사용하면 단일 열 값을 여러 개의 새 열로 우아하게 분할하여 데이터를 저장하고 액세스하는 깔끔하고 구조화된 방법을 제공할 수 있습니다.

위 내용은 SQL에서 구독 번호의 단일 열을 여러 열로 분할하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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