MySQL как удалить строку?


iSmel
710

Помогите, кто в теме: надо через phpmyadmin в базе MySQL удалить все строки, заключенные между <h2>….</h2>

Сам заголовок и теги.

Чтобы вырезать или заменить конкретный текст нашел конструкцию:

UPDATE wp_posts SET post_content = REPLACE (post_content, ‘Текст который нужно заменить’, ‘новый текст’);

но ей можно вырезать только сам тег, а как вырезать еще и текст между тегами если он везде естественно разный? Это реально?


Sokol2012

А много таких строк, если ручками удалить всё?


danforth

iSmel, есть регекспы, но парсить HTML регекспами не совсем умная затея. Какая версия MySQL?


webrock

iSmel:
Помогите, кто в теме: надо через phpmyadmin в базе MySQL удалить все строки, заключенные между <h2>….</h2>

Сам заголовок и теги.

Чтобы вырезать или заменить конкретный текст нашел конструкцию:

UPDATE wp_posts SET post_content = REPLACE (post_content, ‘Текст который нужно заменить’, ‘новый текст’);

но ей можно вырезать только сам тег, а как вырезать еще и текст между тегами если он везде естественно разный? Это реально?

Можно текст заменить, к примеру словом “удалить”, а потом убрав теги, массово, по базе удалить это слово.


LEOnidUKG

Я вам рекомендую, выгрузить таблицу в файлик

Через notepad++ сделать замену через регулярку

И заново залить

Дело 5 минут.


ivan-lev

LEOnidUKG:
Через notepad++ сделать замену через регулярку

Пожалуй, самый оптимальный и универсальный вариант..

Начиная с MySQL версии 8.0 можно использовать REGEXP_REPLACE https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-replace

Для более ранних версий есть библиотека для MySQL, реализующая PREG https://github.com/mysqludf/lib_mysqludf_preg#readme

но вряд ли имеет смысл её устанавливать для разовой замены, а наличие её на шаредах совсем маловероятно..


iSmel

Sokol2012:
А много таких строк, если ручками удалить всё?

Около 3 тыс, руками не хотелось бы )

———- Добавлено 03.04.2020 в 14:08 ———-

danforth:
iSmel, есть регекспы, но парсить HTML регекспами не совсем умная затея. Какая версия MySQL?

nginx/1.16.1

Версия клиента базы данных: libmysql – 10.1.38-MariaDB

PHP расширение: mysqli

Версия PHP: 5.4.16

———- Добавлено 03.04.2020 в 14:09 ———-

LEOnidUKG:
Я вам рекомендую, выгрузить таблицу в файлик

Через notepad++ сделать замену через регулярку

И заново залить

Дело 5 минут.

Похоже придется так… спасибо


CostaRica

Это не сложно, недавно делал такое.

Если есть возможность сделать копию базы и выдать на нее доступ, я бы мог показать.

Описывать здесь всю процедуру не вижу смысла, это как в той истории, когда знаешь точку, по которой надо ударить кувалдой.


Sitealert

Пройтись по таблице скриптом SELECT/UPDATE – “два пальца об асфальт”.


ivan-lev

Sitealert, у каждого свой уровень “двупальцевости”..

Для кого-то “пройтись по таблице” да ещё и “скриптом” с какими-то “SELECT/UPDATE” – это абракадабра полная.. )


DF™

Я думаю можно такое сделать с помощью UPDATE и строковых функций: SUBSTRING(str,pos,len), LOCATE(substr,str) без всяких регексов одним запросом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *