sql - 将一个 SQL 字符串拆分为多个字符串

标签 sql sql-server string substring

我试图将包含多个电子邮件地址数据的单个字符串拆分为三个变量。字符串用 ; 标记电子邮件地址的开始/结束。性格。

一个示例字符串是:

'joebloggs@gmailcom;jimbowen@aol.com;dannybaker@msn.com'

我目前的代码如下:

    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)

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

提前致谢。

最佳答案

假设总是有 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)

关于sql - 将一个 SQL 字符串拆分为多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23521773/

相关文章:

sql - 如何从 Postgres 中的动态 SQL 获取结果?

mysql - 在同一查询中更新列两次

mysql - SQL 更新 - 字符串拆分

如果超时失败,C# 重试 Sql 查询

sql - 通过连接多列删除查询

sql - 构建不包含基于层次结构的数据的 SQL 查询

java - 如何在 10 位数字的第三位和下一个第三位和下一个第四位显示带点的数字?

c - 如果第二个字符串在开头,strstr 会返回与第一个字符串相同的指针吗?

java - 如何在 Java 中向后打印多个字符串

sql - 寻找补充日期范围?