Я пытаюсь заменить текст в своей базе данных 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 все равно приведет к полному сканированию таблицы. Оригинальное ОБНОВЛЕНИЕ лучше всего подходит для данного сценария.
% не работает в этом сценарии?