Регулярное выражение T-SQL выберите электронную почту из строки - PullRequest
0 голосов
/ 20 ноября 2010

У меня есть столбец в таблице, содержащей такую ​​строку- «Электронная почта ответственного автора: john.dio@pluto.com, ref @ 4567 ...»

Все, что мне нужно, это получить письмо из строки. Я с легкостью делал это, используя замечательное программное обеспечение, называемое editpad pro, но сейчас я имею дело с около 10 миллионами записей, и ни один редактор не поддерживает такой объем.

Как я могу написать T-SQL в 2008 году для выбора значения соответствия регулярному выражению? Регулярное выражение для поиска действительной электронной почты: "\ b [A-Z0-9 ._% + -] * @ [A-Z0-9 .-] +. [A-Z] {2,4} \ b"

Большое спасибо.

Ответы [ 3 ]

3 голосов
/ 20 ноября 2010

Вы можете использовать grep для извлечения всех совпадений из огромного количества текста:

grep <regexp> <filename>

Простой способ запустить grep в Windows - загрузить версию MingW32 Гит.

1 голос
/ 20 ноября 2010

Я думаю, вы, вероятно, могли бы найти значительно более эффективные способы сделать это, чем tsql, но если это инструмент, который вы можете использовать, вот статья с некоторыми функциями, которые создают поддержку регулярных выражений, используя только функции tsql и ole автоматизация.

1 голос
/ 20 ноября 2010

SQL Server изначально не поддерживает регулярные выражения - вы должны использовать функциональность CLR для расширения функциональности SQL Server 2005+ для таких вещей, как поддержка регулярных выражений. Эта ссылка предоставляет сборки, которые можно развернуть, но большинство магазинов не допускают CLR.

CHARINDEX может помочь, но PATINDEX имеет ограниченная поддержка сопоставления с образцом .

Если вам нужно вывести значение, вам действительно следует хранить его в своем собственном столбце, а не где-то в тексте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...