2013-05-15 6 views
0

У меня есть таблица sql с около 300 неправильно отформатированных сообщений электронной почты, которые я пытаюсь очистить. Я пытаюсь восстановить весь адрес электронной почты, чтобы я мог сбросить их в другой таблице.Удалить текст вокруг тега

То, что я хотел бы сделать, это написать запрос, который будет удалить весь текст до и после

<Address /> 

тега. Я хотел бы, чтобы следующие результаты, чтобы показать в своем запросе:

 <Address id="ref-12">[email protected]</Address> 
     <Address id="ref-12">[email protected]</Address> 
     Etc.. 

Не знаю, как на самом деле начать с этим запросом или что искать.

+1

Как выглядят ваши исходные данные? –

+0

Мне пришлось отредактировать текст, чтобы добавить комментарии. Код до и после тегов адресов не всегда будет одинаковым. [email protected] [email protected] <отображаемое_имя XSI: нуль = "1 "/> [email protected] <отображаемое_имя XSI: нуль = "1"/> crjunk

ответ

2

Я немного непонятно на ваш вопрос, но если вы пытаетесь удалить теги вокруг вашей электронной почты, попробуйте следующее:

update table 
set email = replace(email, '<Address id="ref-12">', '') 

, а затем это:

update table 
set email = replace(email, '</Address>', '') 
+0

или сделать это одним вызовом ... '' 'set email = replace (replace (email, '

', ''), '
', '')' '' – booyaa

+0

Я хочу сохранить тег адреса в результатах моих запросов. У меня есть еще много дополнительного текста перед

и после тега
. Общее замещение не будет выполнено. Извините, я не задал вопрос. – crjunk

1

Попробуйте это один:

UPDATE mytable 
SET  email = SUBSTRING(email, CHARINDEX('>', email) + 1, 
         LEN(email) - CHARINDEX('>', email) - 10) 
WHERE RIGHT(email,1) = '>' 
+0

приятно, стыдно за жесткое кодированное значение для закрывающего тега (10). Я думаю, это нормально для одного запроса. вот SQLFiddle на тот случай, если кто-то захочет увидеть разбивку этого подстрочного вызова: http://sqlfiddle.com/#!3/d41d8/13770 – booyaa