MySQL « Заменить часть строки по маске (шаблону)

Доброго времени суток.
Столкнулся с задачей замены по шаблону в MySQL.
Некоторые записи в таблице заканчиваются примерно следующим образом:

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .mysql.geshi_code {font-family:monospace;} .mysql.geshi_code .imp {font-weight: bold; color: red;} .mysql.geshi_code .kw1 {color: #990099; font-weight: bold;} .mysql.geshi_code .kw2 {color: #990099; font-weight: bold;} .mysql.geshi_code .kw3 {color: #9900FF; font-weight: bold;} .mysql.geshi_code .kw4 {color: #999900; font-weight: bold;} .mysql.geshi_code .kw5 {color: #999900; font-weight: bold;} .mysql.geshi_code .kw6 {color: #FF9900; font-weight: bold;} .mysql.geshi_code .kw7 {color: #FF9900; font-weight: bold;} .mysql.geshi_code .kw8 {color: #9900FF; font-weight: bold;} .mysql.geshi_code .kw9 {color: #9900FF; font-weight: bold;} .mysql.geshi_code .kw10 {color: #CC0099; font-weight: bold;} .mysql.geshi_code .kw11 {color: #CC0099; font-weight: bold;} .mysql.geshi_code .kw12 {color: #009900;} .mysql.geshi_code .kw13 {color: #000099;} .mysql.geshi_code .kw14 {color: #000099;} .mysql.geshi_code .kw15 {color: #000099;} .mysql.geshi_code .kw16 {color: #000099;} .mysql.geshi_code .kw17 {color: #000099;} .mysql.geshi_code .kw18 {color: #000099;} .mysql.geshi_code .kw19 {color: #000099;} .mysql.geshi_code .kw20 {color: #000099;} .mysql.geshi_code .kw21 {color: #000099;} .mysql.geshi_code .kw22 {color: #000099;} .mysql.geshi_code .kw23 {color: #000099;} .mysql.geshi_code .kw24 {color: #000099;} .mysql.geshi_code .kw25 {color: #000099;} .mysql.geshi_code .kw26 {color: #000099;} .mysql.geshi_code .kw27 {color: #00CC00;} .mysql.geshi_code .coMULTI {color: #808000; font-style: italic;} .mysql.geshi_code .co1 {color: #808080; font-style: italic;} .mysql.geshi_code .co2 {color: #808080; font-style: italic;} .mysql.geshi_code .es0 {color: #004000; font-weight: bold;} .mysql.geshi_code .es1 {color: #008080; font-weight: bold;} .mysql.geshi_code .br0 {color: #FF00FF;} .mysql.geshi_code .sy1 {color: #CC0099;} .mysql.geshi_code .sy2 {color: #000033;} .mysql.geshi_code .st0 {color: #008000;} .mysql.geshi_code .nu0 {color: #008080;} .mysql.geshi_code span.xtra { display:block; }

Основное содержание, которое не нужно трогать. После него идет два переноса строки.

[magnet=magnet:?xt=urn:btih:108A6A67BD4EE73E06CF244045D1AB164BF1419D&tr=udp://tracker.publicbt.com:80/announce&tr=udp://tracker.openbittorrent.com:80/announce]Скачать (7,46 Gb)[/magnet]
 

Нужно такие строки удалить. Проблема в том, что здесь встречаются разные значения внутри этой строки. В частности, в данном случае эти: 108A6A67BD4EE73E06CF244045D1AB164BF1419D и 7,46. Т.е. очевидно, на основе их надо составить какой-то шаблон и потом составить MySQL-запрос, который бы удалил такие подстроки. Прошу вашей помощи.

1 ответов


Я так понимаю нужно удалить переносы строки и все что дальше... Оставить только "Основное содержание, которое не нужно трогать.". Если так, то:


UPDATE `table`
SET `field`=CONCAT (SUBSTR(`field`,1, LOCATE('

[magnet'
,`field`)-1 ), SUBSTR(`field`,LOCATE('[/magnet]', `field`)+ LENGTH('[/magnet]') ) );
 
Именно так, чтобы сохранить переносы строк (после LOCATE идет 2 переноса), а не ковырять через \n\n или \r\n\r\n, т.к. неизвестно что там у вас за версия и как оно будет работать