복붙노트

[SQL] 행에 쉼표로 구분 된 열 값을 변환

SQL

행에 쉼표로 구분 된 열 값을 변환

나는 아래와 같이 저장된 데이터가있는 테이블의 샘플을

Id   | String
--------------
1     abc,def,ghi
2     jkl,mno,pqr

내가 좋아하는 출력을 필요로 ..

Id   | processedrows
--------------
1     abc
1     def
1     ghi
2     jkl
2     mno
2     pqr

어떻게 SQL Server에서 선택 쿼리와 동일한 기능을 수행 할 수 있습니까?

해결법

  1. ==============================

    1.이 시도

    이 시도

     SELECT A.[id],  
         Split.a.value('.', 'VARCHAR(100)') AS String  
     FROM  (SELECT [id],  
             CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML) AS String  
         FROM  TableA) AS A CROSS APPLY String.nodes ('/M') AS Split(a); 
    

    여기 참조

    http://www.sqljason.com/2010/05/converting-single-comma-separated-row.html

  2. ==============================

    2.

    SELECT EmployeeID,
    LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)'))) AS Certs
    FROM
    (
    SELECT EmployeeID,CAST('<XMLRoot><RowData>' + REPLACE(Certs,',','</RowData><RowData>') + '</RowData></XMLRoot>' AS XML) AS x
    FROM   @t
    )t
    CROSS APPLY x.nodes('/XMLRoot/RowData')m(n)
    
  3. ==============================

    3.이와 함께하십시오. 당신은 당신의 출력을 얻을 것이다.

    이와 함께하십시오. 당신은 당신의 출력을 얻을 것이다.

    SELECT id,
    PARSENAME(REPLACE(Split.a.value('.', 'VARCHAR(100)'),'-','.'),1) 'Values' 
    FROM  
    (
         SELECT algorithms,
         CAST ('<M>' + REPLACE(string, ',', '</M><M>') + '</M>' AS XML) AS Data 
         FROM   <TableName> 
    ) AS A 
    CROSS APPLY Data.nodes ('/M') AS Split(a)
    
  4. ==============================

    4.의 스크립트 아래를 해보자 : -

    의 스크립트 아래를 해보자 : -

    declare @str varchar(max)
    
    SELECT @str = isnull(@str +',', '') + a.Value
    FROM (SELECT Value Entityvalue from Table) a
    
    select @str
    
  5. from https://stackoverflow.com/questions/13873701/convert-comma-separated-column-value-to-rows by cc-by-sa and MIT license