您可以
'@'在字符串中搜索。然后,您在的
LEFT和
RIGHT端获取字符串
'@'。那么你要
REVERSE的
LEFT一侧,并得到第一次出现
''则让
SUBSTRING从那里。然后
REVERSE获取原始表格。相同的原则适用于
RIGHT不做任何事情的一方
REVERSE。
示例字符串:
'some text someemail@domain.org some text'
LEFT
=’一些文本someemail’RIGHT
=’@domain.org一些文字’- 反向LEFT =’liameemos txet emos’
SUBSTRING
直到第一个空格=’liameemos’REVERSE
(4)=一封电子邮件SUBSTRING
(2)直到第一个空格=’@ domain.org‘- 结合5和6 ='someemail@domain.org‘
您的查询将是:
;WITH CteEmail(email) AS( SELECt 'someemail@domain.org' UNIOn ALL SELECT 'some text someemail@domain.org some text' UNIOn ALL SELECT 'no email'),CteStrings AS( SELECT [Left] = LEFt(email, CHARINDEX('@', email, 0) - 1), Reverse_Left = REVERSe(LEFt(email, CHARINDEX('@', email, 0) - 1)), [Right] = RIGHt(email, CHARINDEX('@', email, 0) + 1) FROM CteEmail WHERe email LIKE '%@%')SELECt *, REVERSe( SUBSTRINg(Reverse_Left, 0, CASE WHEN CHARINDEX(' ', Reverse_Left, 0) = 0 THEN LEN(Reverse_Left) + 1 ELSE CHARINDEX(' ', Reverse_Left, 0) END ) ) + SUBSTRINg([Right], 0, CASE WHEN CHARINDEX(' ', [Right], 0) = 0 THEN LEN([Right]) + 1 ELSE CHARINDEX(' ', [Right], 0) END )FROM CteStrings样本数据:
email----------------------------------------someemail@domain.orgsome text someemail@domain.org some textno email
结果
---------------------someemail@domain.orgsomeemail@domain.org



