복붙노트

[SQL] 분할 쉼표에서는 SQL 서버에 복수의 열을 열 값을 구분

SQL

분할 쉼표에서는 SQL 서버에 복수의 열을 열 값을 구분

내 표는 세 ​​개의 열이 있습니다. 열 중 하나 [열 3]는 여러 값을 갖는다. 그래서, 나는 테이블에 선택 명령을 할 때 :

Select col1, col2, col3 from MyTable

그것은 나에게 아래의 결과를 제공합니다 :

         Col1       Col2         Col3
         ------------------------------
Row 1    430        A319         N1160 N1336
Row 2    abc        efg          G3489 M5678 N5643

어떤 방법이하다면 출력을 같이 얻을 수 있습니다 :

         Col1       Col2         Col3
         ------------------------------
Row 1    430        A319         N1160
Row 2    430        A319         N1336
Row 3    abc        efg          G3489
Row 4    abc        efg          M5678
Row 5    abc        efg          N5643

컬럼은 복수의 값이있는 경우와 마찬가지로, 새로운 행이 열에서 각각의 값에 대응하는 표시 및 다른 열은 중복 데이터를 포함한다.

나는 문제가 꽤 명확입니다 바랍니다.

해결법

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

    1.

    SELECT col1,
           col2,
           Split.a.value('.', 'VARCHAR(100)') col3
    FROM   (SELECT col1,
                   col2,
                   Cast ('<M>' + Replace(col3, ' ', '</M><M>') + '</M>' AS XML) AS Data
            FROM   [table]) AS A
           CROSS APPLY Data.nodes ('/M') AS Split(a) 
    
  2. from https://stackoverflow.com/questions/26293157/splitting-comma-separated-values-in-columns-to-multiple-rows-in-sql-server by cc-by-sa and MIT license