gpt4 book ai didi

sql - 使用 tsql 从字符串中提取电子邮件地址

转载 作者:行者123 更新时间:2023-12-02 21:26:44 27 4
gpt4 key购买 nike

我正在尝试从现有评论字段中提取电子邮件地址并将其放入自己的列中。该字符串可能类似于“这是一个电子邮件地址为 someemail@domain.org 的示例评论”,或者只是电子邮件本身“someemail@domain.org”。

我认为最好的办法是找到“@”符号的索引并在两个方向上搜索,直到击中字符串末尾或有空格。谁能帮我完成这个实现吗?

最佳答案

我知道 wewethemenace 已经回答了这个问题,但他/她的解决方案似乎过于复杂。为什么要将电子邮件地址的左侧和右侧连接在一起?我宁愿只找到电子邮件地址的开头和结尾,然后使用子字符串返回电子邮件地址,如下所示:

我的 table

DECLARE @Table TABLE (comment NVARCHAR(50));
INSERT INTO @Table
VALUES ('blah MyEmailAddress@domain.org'), --At the end
('blah MyEmailAddress@domain.org blah blah'), --In the middle
('MyEmailAddress@domain.org blah'), --At the beginning
('no email');

实际查询:

SELECT  comment,        
CASE
WHEN CHARINDEX('@',comment) = 0 THEN NULL
ELSE SUBSTRING(comment,beginningOfEmail,endOfEmail-beginningOfEmail)
END email
FROM @Table
CROSS APPLY (SELECT CHARINDEX(' ',comment + ' ',CHARINDEX('@',comment))) AS A(endOfEmail)
CROSS APPLY (SELECT DATALENGTH(comment)/2 - CHARINDEX(' ',REVERSE(' ' + comment),CHARINDEX('@',REVERSE(' ' + comment))) + 2) AS B(beginningOfEmail)

结果:

comment                                            email
-------------------------------------------------- --------------------------------------------------
blah MyEmailAddress@domain.org MyEmailAddress@domain.org
blah MyEmailAddress@domain.org blah blah MyEmailAddress@domain.org
MyEmailAddress@domain.org blah MyEmailAddress@domain.org
no email NULL

关于sql - 使用 tsql 从字符串中提取电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29596780/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com