T-SQL Regular Expression从字符串中选择电子邮件

时间:2010-11-20 18:03:55

标签: regex tsql

我在包含这样的字符串的表中有列 - “执行作家的电子邮件是john.dio@pluto.com,ref @ 4567 ......”

我只需要从字符串中获取电子邮件。我一直在使用名为editpad pro的优秀软件轻松做到这一点,但现在我正在处理大约1000万条记录,并且没有编辑器支持这种音量。

如何在2008年编写T-SQL来选择正则表达式匹配值? 找到有效电子邮件的正则表达式是“\ b [A-Z0-9 ._%+ - ] * @ [A-Z0-9 .-] +。[A-Z] {2,4} \ b”

非常感谢。

3 个答案:

答案 0 :(得分:3)

您可以使用grep从大量文本中提取所有匹配项:

grep <regexp> <filename>

在Windows上运行grep的简便方法是下载Git的MingW32 version

答案 1 :(得分:1)

SQL Server本身不支持正则表达式 - 您必须使用CLR功能来扩展SQL Server 2005+功能,例如正则表达式支持。 This link提供了可以部署的程序集,但大多数商店不允许使用CLR。

CHARINDEX可能会有所帮助,但PATINDEXlimited pattern matching support

如果你需要获取一个值,你应该将它存储在它自己的列中而不是文本中的某个地方。

答案 2 :(得分:1)

我认为你可能会找到比tsql更有效的方法,但是如果这是你可以使用的工具,here's an article和一些使用tsql函数和ole自动化创建正则表达式支持的函数。{ / p>