>

샘플 데이터 :

id  email_address                                   email_new
-------------------------------------------------------------------------------
1   [email protected]                      [email protected]
2   [email protected]; [email protected]      [email protected]
2   [email protected]; [email protected]      [email protected]
3   [email protected]; [email protected]; [email protected]  [email protected]
3   [email protected]; [email protected]; [email protected]  [email protected]
3   [email protected]; [email protected]; [email protected]  [email protected]

다음 쿼리를 사용하여 ' ; 를 분할했습니다.  '문자열을 행으로 구분 :

SELECT
    id, email_address, email_new
FROM 
    (SELECT 
         id, email_address, 
         Split.a.value('.', 'NVARCHAR(max)') AS email_new 
     FROM
         (SELECT 
              id, email_address, CAST ('<M>' + REPLACE(email_address, '; ', '</M><M>') + '</M>' AS XML) email_new
          FROM 
              table) AS A 
     CROSS APPLY 
         email_new.nodes ('/M') AS Split(a)) x
GROUP BY
    id, email_address, email_new

질문과 관련된 문제는 모든 분할 이메일 주소에 대해 새 행을 만들고 싶지 않다는 것입니다. 새 열을 추가하고 싶습니다.

id  email_1                      email_2                email_3
------------------------------------------------------------------------------
1   [email protected]   null                   null
2   [email protected]         [email protected]   null
3   [email protected]                  [email protected]            [email protected]

email_address 열에는 최대 3 개의 분리 된 전자 메일 주소가 있습니다. 어떤 제안? 3 이상으로 커질 경우 응답이 n 열을 차지할 수 있다면 가장 좋습니다.

관련 자료

  • 이전 sql server - 데이터베이스 세트에서 읽고 쓰는 응용 프로그램을 빌드해야 할 때 Apache Gora가 적합합니까?
  • 다음 python - RDD의 pyspark 필터링 목록