구독 번호를 여러 열로 분할
단일 열에 구독 번호와 같은 여러 값이 포함된 상황에서 이러한 값을 분할 개별 열에 추가하는 것은 유용한 데이터 조작 기술이 될 수 있습니다. 단계별 가이드는 다음과 같습니다.
1. 교차 적용 XML 조각화:
이 접근 방식은 XML 조각화를 활용하여 구독 번호를 XML 문서로 변환하여 개별 값을 별도의 노드로 추출할 수 있도록 합니다.
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.SomeCol,' ','-'),'-','§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml) as xDim) as A ) B
여기서, xDim은 구독 번호 문자열을 XML로 변환하는 조각화 요소입니다. x[1], x[2] 등으로 번호가 매겨진 결과 노드가 대상 열로 추출됩니다.
2. 즉시 테이블 생성:
또는 쿼리 실행 중에 대상 테이블을 동적으로 생성할 수 있습니다. 이렇게 하면 사전에 명시적인 테이블 생성 문이 필요하지 않습니다.
Select A.PUB_FORM_NUM ,B.* Into MyNewPubTable From @YourTable 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.PUB_FORM_NUM,' ','-'),'-','§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml) as xDim) as A ) B
이 접근 방식은 MyNewPubTable을 생성하고 분할 구독 번호 값을 대상 열에 직접 삽입합니다.
위 내용은 여러 구독 번호의 단일 열을 SQL의 개별 열로 분할하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!