如何在SQL Server中从指定格式字符串提取邮箱地址
提取指定区间内的邮箱地址解决方案
你要提取字符串中位于User:之后、TextClient:之前的邮箱地址,之前的写法逻辑绕弯导致结果冗余,试试下面这个更直接精准的方法:
WITH emailString AS ( SELECT 'Text Draft Saved - User: v-test123@blah.com TextClient: Blah' AS st ) SELECT st, LTRIM(RTRIM(SUBSTRING(st, CHARINDEX('User:', st) + 5, -- 跳过"User:"的5个字符长度,定位到邮箱起始位置 CHARINDEX('TextClient:', st) - (CHARINDEX('User:', st) + 5) ))) AS extracted_email FROM emailString
逻辑说明
CHARINDEX('User:', st)找到User:在字符串里的起始位置,加上5(User:的字符数),得到邮箱内容的起始点;CHARINDEX('TextClient:', st)找到TextClient:的起始位置,用它减去邮箱起始点的数值,得到需要截取的邮箱长度;SUBSTRING按上述起止位置截取内容,最后用LTRIM/RTRIM去掉前后多余空格,得到干净的邮箱地址。
运行后extracted_email列会返回v-test123@blah.com,完全符合需求。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

