将SQL字符串拆分为多个字符串

coo*_*tkm 2 sql sql-server string substring

我试图将包含多个电子邮件地址数据的单个字符串拆分为三个变量.字符串标记电子邮件地址的开头/结尾; 字符.

示例字符串将是:

'joebloggs@gmailcom;jimbowen@aol.com;dannybaker@msn.com'
Run Code Online (Sandbox Code Playgroud)

我目前的代码如下:

    DECLARE @Email VARCHAR(100),
        @Email2 VARCHAR(100),
        @Email3 VARCHAR(100)

SET @Email = 'joebloggs@gmailcom;jimbowen@aol.com;dannybaker@msn.com'

SET @Email2 = SUBSTRING(@Email, CHARINDEX(';', @Email)+1, LEN(@Email))
SET @Email3 = SUBSTRING(@Email, CHARINDEX(';', @Email)+1, LEN(@Email))
SET @Email = SUBSTRING(@Email, 1, CHARINDEX(';', @Email)-1)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎不起作用.有人可以指出我哪里出错了,我应该怎么做才能解决我的问题?

提前致谢.

Mar*_*rkD 5

假设总会有3个电子邮件地址 - 以下似乎有效;

DECLARE @Email VARCHAR(100),
        @Email2 VARCHAR(100),
        @Email3 VARCHAR(100)

SET @Email = 'joebloggs@gmailcom;jimbowen@aol.com;dannybaker@msn.com'

SELECT   @Email     = LEFT(@Email, CHARINDEX(';', @Email) - 1)
        ,@Email2    = SUBSTRING (   
                                    @Email, 
                                    CHARINDEX(';', @Email) + 1, 
                                    CHARINDEX(';', @Email, CHARINDEX(';', @Email) + 1) - LEN(LEFT(@Email, CHARINDEX(';', @Email) )) - 1
                                )
        ,@Email3    = RIGHT(@Email, CHARINDEX(';', @Email)-1)
Run Code Online (Sandbox Code Playgroud)