我有一个电子邮件列,每行有3-4封电子邮件,我希望每列分成一封电子邮件:
当前列如下所示:
Email_column
1. drone@gmail.com bob@yahoo.com drake@gmail.com
预期输出应为:
Email_1 Email_2 Email_3
1. drone@email.com bob@yahoo.com drake@gmail.com
答案 0 :(得分:3)
使用CROSS APPLY和一点XML
示例强>
Declare @YourTable table (ID int,Email_column varchar(max))
Insert Into @YourTable values
(1,'drone@gmail.com bob@yahoo.com drake@gmail.com')
Select A.ID
,B.*
From @YourTable A
Cross Apply (
Select Pos1 = n.value('/x[1]','varchar(max)')
,Pos2 = n.value('/x[2]','varchar(max)')
,Pos3 = n.value('/x[3]','varchar(max)')
,Pos4 = n.value('/x[4]','varchar(max)')
From (Select Cast('<x>' + replace(A.Email_column,' ','</x><x>')+'</x>' as xml) as n) X
) B
<强>返回强>
ID Pos1 Pos2 Pos3 Pos4
1 drone@gmail.com bob@yahoo.com drake@gmail.com NULL