如何解决如何从SQL Server中的单行提取多个字符串
您可以递归使用cte去除字符串。
declare @T table (id int, [text] nvarchar(max))
insert into @T values (1, 'Peter (Peter@peter.de) and Marta (marty@gmail.com) are doing fine.')
insert into @T values (2, 'nothing special here')
insert into @T values (3, 'Another email address (me@my.com)')
;with cte([text], email)
as
(
select
right([text], len([text]) - charindex(')', [text], 0)),
substring([text], charindex('(', [text], 0) + 1, charindex(')', [text], 0) - charindex('(', [text], 0) - 1)
from @T
where charindex('(', [text], 0) > 0
union all
select
right([text], len([text]) - charindex(')', [text], 0)),
substring([text], charindex('(', [text], 0) + 1, charindex(')', [text], 0) - charindex('(', [text], 0) - 1)
from cte
where charindex('(', [text], 0) > 0
)
select email
from cte
结果
email
Peter@peter.de
me@my.com
marty@gmail.com
解决方法
我有例如以下表格数据:
id | text
--------------------------------------------------------------------------------
1 | Peter (Peter@peter.de) and Marta (marty@gmail.com) are doing fine.
2 | Nothing special here
3 | Another email address (me@my.com)
现在,我需要一个 选择, 该 选择返回我的文本列中的所有电子邮件地址
(只检查括号即可),并且如果文本列中有多个地址,则返回多个行。我知道如何提取第一个元素,但是对如何找到第二个和更多结果完全一无所知。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。