栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

您可以

'@'
在字符串中搜索。然后,您在的
LEFT
RIGHT
端获取字符串
'@'
。那么你要
REVERSE
LEFT
一侧,并得到第一次出现
''
则让
SUBSTRING
从那里。然后
REVERSE
获取原始表格。相同的原则适用于
RIGHT
不做任何事情的一方
REVERSE

示例字符串:

'some text someemail@domain.org some text'

  1. LEFT
    =’一些文本someemail’
  2. RIGHT
    =’@domain.org一些文字’
  3. 反向LEFT =’liameemos txet emos’
  4. SUBSTRING
    直到第一个空格=’liameemos’
  5. REVERSE
    (4)=一封电子邮件
  6. SUBSTRING
    (2)直到第一个空格=’@ domain.org‘
  7. 结合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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410899.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号