SQL按逗号分隔的电子邮件地址拆分电子邮件数据

SQL按逗号分隔的电子邮件地址拆分电子邮件数据,sql,sql-server,Sql,Sql Server,假设我有以下姓名列表和逗号分隔的电子邮件地址: SELECT 'a' name, 'bob1@bob.com, bob2@bob.com' email INTO #Temp UNION ALL SELECT 'b', 'john@john.com' UNION ALL SELECT 'c', 'pete@pete.com, andrew@andrew.com, will@will.com' SELECT * FROM #temp 是否可以为每个电子邮件地址选择一行 i、 e 请尝试: SEL

假设我有以下姓名列表和逗号分隔的电子邮件地址:

SELECT 'a' name, 'bob1@bob.com, bob2@bob.com' email INTO #Temp UNION ALL
SELECT 'b', 'john@john.com' UNION ALL
SELECT 'c', 'pete@pete.com, andrew@andrew.com, will@will.com'

SELECT * FROM #temp
是否可以为每个电子邮件地址选择一行

i、 e

请尝试:

SELECT A.name,  
     Split.a.value('.', 'VARCHAR(100)') AS CVS  
FROM  
(
    SELECT name,  
         CAST ('<M>' + REPLACE(email, ',', '</M><M>') + '</M>' AS XML) AS CVS  
    FROM  #Temp 
) AS A CROSS APPLY CVS.nodes ('/M') AS Split(a)
请尝试:

SELECT A.name,  
     Split.a.value('.', 'VARCHAR(100)') AS CVS  
FROM  
(
    SELECT name,  
         CAST ('<M>' + REPLACE(email, ',', '</M><M>') + '</M>' AS XML) AS CVS  
    FROM  #Temp 
) AS A CROSS APPLY CVS.nodes ('/M') AS Split(a)
请尝试:

SELECT A.name,  
     Split.a.value('.', 'VARCHAR(100)') AS CVS  
FROM  
(
    SELECT name,  
         CAST ('<M>' + REPLACE(email, ',', '</M><M>') + '</M>' AS XML) AS CVS  
    FROM  #Temp 
) AS A CROSS APPLY CVS.nodes ('/M') AS Split(a)
请尝试:

SELECT A.name,  
     Split.a.value('.', 'VARCHAR(100)') AS CVS  
FROM  
(
    SELECT name,  
         CAST ('<M>' + REPLACE(email, ',', '</M><M>') + '</M>' AS XML) AS CVS  
    FROM  #Temp 
) AS A CROSS APPLY CVS.nodes ('/M') AS Split(a)

谢谢,就像一个符咒…刚刚在地址上添加了一个LTRIMRTRIM。请小心使用varchar100-根据标准,电子邮件地址可以是320个字符,IIRC。@AaronBertrand-顺序问题-RFC已通过勘误表澄清,说明最大长度为254个字符-请参阅-但您的观点仍然正确,像一个符咒一样工作…只是在地址上添加了一个LTRIMRTRIM。请小心使用varchar100-电子邮件地址根据标准可以是320个字符,IIRC。@AaronBertrand-顺序问题-RFC已通过勘误表澄清,说明最大长度为254个字符-请参阅-但您的观点仍然正确,像一个符咒一样工作…只是在地址上添加了一个LTRIMRTRIM。请小心使用varchar100-电子邮件地址根据标准可以是320个字符,IIRC。@AaronBertrand-顺序问题-RFC已通过勘误表澄清,说明最大长度为254个字符-请参阅-但您的观点仍然正确,像一个符咒一样工作…只是在地址上添加了一个LTRIMRTRIM。请小心使用varchar100-电子邮件地址根据标准可以是320个字符,IIRC。@AaronBertrand-顺序问题-RFC已通过勘误表澄清,说明最大长度为254个字符-请参阅-但您的观点仍然有效