@lagudal

Как найти и заменить стринг в базе mysql с html тегами и текстом между тегами?

Ситуация такая - в базе есть много записей из контента такого примерно вида:
<h4 class="notify__title notify__title--small">тут всегда разное название</h4>

или то же самое но с h3 -
<h3 class="notify__title notify__title--small">тут всегда разное название</h3>

Таблицы и поля в которых имеются эти вхождения известны.
Нужно во всех эти вхождениях h3 и h4 заменить на span.
В принципе, по идее хватило бы страндартного запроса типа
UPDATE `table_name`
 SET `field_name` = replace(field_name, 'string_to_find', 'string_to_replace')

если бы не текст межу тегами.
Как проще решить?
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Немного запутанно, но можно так:
select 
	locate('<h4 class="notify__title notify__title--small">', html, 1) as o,
	locate('</h4>', html, locate('<h4 class="notify__title notify__title--small">', html, 1)) as c,
	concat('<span>',
	substr(
	  html, 
	  locate('<h4 class="notify__title notify__title--small">', html, 1) + 47,
	  locate('</h4>', html, locate('<h4 class="notify__title notify__title--small">', html, 1))-locate('<h4 class="notify__title notify__title--small">', html, 1) - 47
	), '</span>') as new_html
from test;


SQL test
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы