Назад | Перейти на главную страницу

Заменить текст в MySQL - Подстановочные знаки для замены определенных переменных частей?

Я пытаюсь заменить текст в своей базе данных WordPress MySQL. Мне нужно удалить часть текущего html-кода изображений, но эта часть текста является переменной, хотя есть часть, которая никогда не изменяется.

Есть ли подстановочный знак что я могу использовать для замены MySQL?

Пример: я хотел бы заменить это:

<a target="_self" href="actualidad/tecnologia/4455-windows-7-surpasses.html"><img src=”http://www.example.com/files/HIDDEN_264_23662_FOTO_win01.jpg" width="215" height="156" /></a>

к

<img src=”http://www.example.com/files/HIDDEN_264_23662_FOTO_win01.jpg" width="215" height="156" />

И удалите часть href, поэтому я подумал о замене, подобной этой:

update wp_posts set post_content = REPLACE 
(post_content, '<a target="_self" href=*<img','<img');

Есть ли "*" (или регулярное выражение), которое принимает все, что есть между 'href' и '

Я обычно обманываю и выгружаю базу данных в текст, а затем использую sed (или Notepad ++, если база данных достаточно мала). За исключением этого, проще сделать это программно, используя Perl или Python.

Такие манипуляции с прямым SQL болезненны. Если вы это сделаете, я настоятельно рекомендую вам избегать REPLACE. Это не то, для чего он обычно используется. Если вы собираетесь произвести массовое изменение существующих строк, используйте ОБНОВИТЬ вместо этого.

К сожалению, других доступных API регулярных выражений нет.

Люди взломали его в дни MySQL 4.0, но такие усилия не сделали его в основных двоичных файлах MySQL.

http://www.php-groupies.de/blogs/archives/17-Regular-Expression-Functions-for-MySQL.html

http://forge.mysql.com/worklog/task.php?id=353

Вашего оператора UPDATE должно быть достаточно.

update wp_posts set post_content = REPLACE (post_content, '<a target="_self" href=*<img','<img');

Даже если бы такой API существовал, нет смысла применять его лучше, чем у вас уже есть. Ваш UPDATE выполняет полное сканирование таблицы. Применение WHERE с использованием REGEXP все равно приведет к полному сканированию таблицы. Оригинальное ОБНОВЛЕНИЕ лучше всего подходит для данного сценария.

% не работает в этом сценарии?