当前位置: 首页 > 面试题库 >

如何从SQL Server中的单行提取多个字符串

孟开宇
2023-03-14
问题内容

我有例如以下表格数据:

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)

现在,我需要一个 选择,选择返回我的文本列中的所有电子邮件地址
(只检查括号即可),并且如果文本列中有多个地址,则返回多个行。我知道如何提取第一个元素,但是对如何找到第二个和更多结果完全一无所知。


问题答案:

您可以递归使用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


 类似资料:
  • 问题内容: 我不知道如何从字符串中获取Unicode字符。例如,如果字符串是“你好”,我如何获得第一个字符“你”? 从另一个地方我得到一种方法: 确实有效。但是我仍然有一些问题: 还有另一种方法吗? 为什么在Go中不能从字符串中获取Unicode字符,却可以获取字节数据? 问题答案: 首先,您可能需要阅读https://blog.golang.org/strings 。它将回答您的部分问题。 Go

  • 问题内容: 给定一个字符串,我需要检查是否有多个换行符(\ n)。如果有,我需要将它们转换为一个换行符。 您能告诉我执行此操作的代码吗?谢谢! 问题答案: 试试这个

  • 我有以下模式: 在第一分隔符中,可以没有开始的圆括号、数字的组合和结束的圆括号。但是,数字和闭括号的组合是存在的,如果有开括号的话。 第二个分隔符从文本的第一列开始,它是该行唯一的单词。 我的正则表达式: 请帮帮我.

  • 问题内容: 在Linux桌面(RHEL4)上,我想从大文件(> 1 Gig)中提取一定范围的字节(通常小于1000)。我知道文件的偏移量和块的大小。 我可以编写代码来执行此操作,但是有命令行解决方案吗? 理想情况是: 问题答案: 尝试:

  • 为了在Java中访问字符串的各个字符,我们有。java中是否有任何内置函数来删除字符串的单个字符? 像这样的东西:

  • 我正在写一个应用程序,根据该应用程序,你将被发送一条短信,其中包含一个重置代码,以确认你是该帐户的所有者。。但是我正在尝试以这样一种方式构建应用程序:它接收接收到的短信的广播,并仅从短信正文中获取指定的整数。我们注意到你想要重置密码的短信示例。密码重置代码是3242。,谢谢 我只想从整个短信正文中获取重置代码=3242。。谢谢