Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 извлечение email из строк  [new]
=Сергей=
Member

Откуда:
Сообщений: 334
Есть много строк текстов самых разных видов (информация о клиентах). Как решить задачу вытаскивания из этих строк адресов email? Тупо создавать список шаблонов не хочется - бывают очень "креативные" строки. Или иначе никак?
5 ноя 14, 19:30    [16802727]     Ответить | Цитировать Сообщить модератору
 Re: извлечение email из строк  [new]
vova ivanov
Member [заблокирован]

Откуда:
Сообщений: 1090
=Сергей=
Есть много строк текстов самых разных видов (информация о клиентах). Как решить задачу вытаскивания из этих строк адресов email? Тупо создавать список шаблонов не хочется - бывают очень "креативные" строки. Или иначе никак?
какие "шаблоны" и как они тебе помогут ?

"бьёшь" весь текст на слова, и оставляешь те которые like '%@%'
возможно, ещё придётся удалить последний символ (. ? , !)
5 ноя 14, 19:44    [16802787]     Ответить | Цитировать Сообщить модератору
 Re: извлечение email из строк  [new]
=Сергей=
Member

Откуда:
Сообщений: 334
vova ivanov
"бьёшь" весь текст на слова

это, похоже, курсор - его хотелось бы избежать
5 ноя 14, 19:50    [16802792]     Ответить | Цитировать Сообщить модератору
 Re: извлечение email из строк  [new]
vova ivanov
Member [заблокирован]

Откуда:
Сообщений: 1090
=Сергей=
vova ivanov
"бьёшь" весь текст на слова

это, похоже, курсор - его хотелось бы избежать
не обязательно
declare @t table (id int identity, txt varchar(max))

insert into @t (txt)
select 'Есть много строк текстов admin@site.ru самых разных видов (информация о клиентах). Как решить задачу вытаскивания из этих строк адресов email admin@site.ru? Тупо создавать список шаблонов не хочется - бывают очень "креативные" строки admin@site.ru. Или иначе никак?'

insert into @t (txt)
select 'Есть много строк текстов admin1@site1.ru самых разных видов (информация о клиентах). Как решить задачу вытаскивания из этих строк адресов email admin@site1.ru? Тупо создавать список шаблонов не хочется - бывают очень "креативные" строки admin1@site.ru. Или иначе никак?'

select 
	t.id,
	b.val
from @t t
cross apply 
	(select cast('<a>'+replace(t.txt,' ','</a><a>')+'</a>' as xml) as txt_xml) a
cross apply 
	(select t.c.value('text()[1]', 'varchar(20)') as val 
	from a.txt_xml.nodes('a') as t(c)) b
where b.val like '%@%'

id          val
----------- --------------------
1           admin@site.ru
1           admin@site.ru?
1           admin@site.ru.
2           admin1@site1.ru
2           admin@site1.ru?
2           admin1@site.ru.
5 ноя 14, 19:57    [16802807]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить