【发布时间】:2018-07-17 19:55:01
【问题描述】:
这就是我的数据的样子。 (我正在尝试准确的电子邮件地址,以便我可以为 TO 和 CC 人发送电子邮件。)
EmailTO:[url=mailto:Test_Email_1@Yahoo.com] Test_Email_1@Yahoo.com[/url]
EmailCC:[url=mailto:Test_Email_2@Yahoo.com] Test_Email_2@Yahoo.com[/url]
Hello, This is the rest of the email message....
当我运行第一个 SQL 时,我得到了我想要的结果。
Select
Body,
SUBSTRING(Body, CHARINDEX('EmailTO', Body) + 20,CHARINDEX(']',Body)-CHARINDEX('EmailTO',Body)-20) ToEmail
返回
ToEmaiL = Test_Email_1@Yahoo.com
但是当我尝试像这样进行第二次 SUBSTRING 时
Select
Body,
SUBSTRING(Body, CHARINDEX('EmailTO', Body) + 20,CHARINDEX(']',Body)-CHARINDEX('EmailTO',Body)-20) ToEmail,
SUBSTRING(Body, CHARINDEX('EmailCC', Body) + 20,CHARINDEX(']',Body)-CHARINDEX('EmailCC',Body)-20) CCEmail --(Simply replacing the EmailTo from the previous line to EmailCC)
From hdIssues
我收到此错误
"Msg 537, Level 16, State 5, Line 1 Invalid length parameter passed to the LEFT or SUBSTRING function."
感谢任何帮助。
附注在我的数据集中,电子邮件地址可以有多个收件人,用分号分隔,如下所示:
[url=mailto:Test_Email_1@Yahoo.com] Test_Email_1@Yahoo.com[/url]; [url=mailto:Test_Email_5@Yahoo.com] Test_Email_5@Yahoo.com[/url]; [url=mailto:Test_Email_8@Yahoo.com] Test_Email_8@Yahoo.com[/url]
【问题讨论】:
-
SQL 确实是不适合这项工作的工具,尤其是使用那个 ps。
-
什么数据库? MYSQL?甲骨文?为您的问题添加适当的标签;正如 HoneyBadger 所指出的,SQL 可能不是最佳选择;我认为一些 Unix 命令可以快速解决这个问题。
-
MS SQL Server 2008 R2
标签: sql sql-server tsql substring charindex