MySQL как удалить строку?05.09.2021 От: faq Из: Веб-строительство iSmel 3 апреля 2020, 07:25 710Помогите, кто в теме: надо через phpmyadmin в базе MySQL удалить все строки, заключенные между <h2>….</h2>Сам заголовок и теги.Чтобы вырезать или заменить конкретный текст нашел конструкцию:UPDATE wp_posts SET post_content = REPLACE (post_content, ‘Текст который нужно заменить’, ‘новый текст’);но ей можно вырезать только сам тег, а как вырезать еще и текст между тегами если он везде естественно разный? Это реально? Sokol2012 3 апреля 2020, 08:01А много таких строк, если ручками удалить всё? danforth 3 апреля 2020, 08:07iSmel, есть регекспы, но парсить HTML регекспами не совсем умная затея. Какая версия MySQL? webrock 3 апреля 2020, 08:10iSmel:Помогите, кто в теме: надо через phpmyadmin в базе MySQL удалить все строки, заключенные между <h2>….</h2> Сам заголовок и теги. Чтобы вырезать или заменить конкретный текст нашел конструкцию: UPDATE wp_posts SET post_content = REPLACE (post_content, ‘Текст который нужно заменить’, ‘новый текст’); но ей можно вырезать только сам тег, а как вырезать еще и текст между тегами если он везде естественно разный? Это реально?Можно текст заменить, к примеру словом «удалить», а потом убрав теги, массово, по базе удалить это слово. LEOnidUKG 3 апреля 2020, 08:14Я вам рекомендую, выгрузить таблицу в файликЧерез notepad++ сделать замену через регуляркуИ заново залитьДело 5 минут. ivan-lev 3 апреля 2020, 08:58LEOnidUKG:Через 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 3 апреля 2020, 10:07Sokol2012:А много таких строк, если ручками удалить всё?Около 3 тыс, руками не хотелось бы )———- Добавлено 03.04.2020 в 14:08 ———-danforth:iSmel, есть регекспы, но парсить HTML регекспами не совсем умная затея. Какая версия MySQL?nginx/1.16.1Версия клиента базы данных: libmysql — 10.1.38-MariaDBPHP расширение: mysqliВерсия PHP: 5.4.16———- Добавлено 03.04.2020 в 14:09 ———-LEOnidUKG:Я вам рекомендую, выгрузить таблицу в файлик Через notepad++ сделать замену через регулярку И заново залитьДело 5 минут.Похоже придется так… спасибо CostaRica 5 апреля 2020, 11:16Это не сложно, недавно делал такое.Если есть возможность сделать копию базы и выдать на нее доступ, я бы мог показать.Описывать здесь всю процедуру не вижу смысла, это как в той истории, когда знаешь точку, по которой надо ударить кувалдой. Sitealert 5 апреля 2020, 11:35Пройтись по таблице скриптом SELECT/UPDATE – «два пальца об асфальт». ivan-lev 5 апреля 2020, 12:39Sitealert, у каждого свой уровень «двупальцевости»..Для кого-то «пройтись по таблице» да ещё и «скриптом» с какими-то «SELECT/UPDATE» — это абракадабра полная.. ) DF™ 8 апреля 2020, 13:46Я думаю можно такое сделать с помощью UPDATE и строковых функций: SUBSTRING(str,pos,len), LOCATE(substr,str) без всяких регексов одним запросом. Похожие записи:Бот для викторины Python Telegram Помогите с jquery Оптимизировать MariaDB? Как убрать вопросы в ромбах на сайте Удалить клонированный элемент JS
iSmel
Помогите, кто в теме: надо через phpmyadmin в базе MySQL удалить все строки, заключенные между <h2>….</h2>
Сам заголовок и теги.
Чтобы вырезать или заменить конкретный текст нашел конструкцию:
UPDATE wp_posts SET post_content = REPLACE (post_content, ‘Текст который нужно заменить’, ‘новый текст’);
но ей можно вырезать только сам тег, а как вырезать еще и текст между тегами если он везде естественно разный? Это реально?
Sokol2012
А много таких строк, если ручками удалить всё?
danforth
iSmel, есть регекспы, но парсить HTML регекспами не совсем умная затея. Какая версия MySQL?
webrock
Помогите, кто в теме: надо через phpmyadmin в базе MySQL удалить все строки, заключенные между <h2>….</h2>
Сам заголовок и теги.
Чтобы вырезать или заменить конкретный текст нашел конструкцию:
UPDATE wp_posts SET post_content = REPLACE (post_content, ‘Текст который нужно заменить’, ‘новый текст’);
но ей можно вырезать только сам тег, а как вырезать еще и текст между тегами если он везде естественно разный? Это реально?
Можно текст заменить, к примеру словом «удалить», а потом убрав теги, массово, по базе удалить это слово.
LEOnidUKG
Я вам рекомендую, выгрузить таблицу в файлик
Через notepad++ сделать замену через регулярку
И заново залить
Дело 5 минут.
ivan-lev
Через 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
А много таких строк, если ручками удалить всё?
Около 3 тыс, руками не хотелось бы )
———- Добавлено 03.04.2020 в 14:08 ———-
iSmel, есть регекспы, но парсить HTML регекспами не совсем умная затея. Какая версия MySQL?
nginx/1.16.1
Версия клиента базы данных: libmysql — 10.1.38-MariaDB
PHP расширение: mysqli
Версия PHP: 5.4.16
———- Добавлено 03.04.2020 в 14:09 ———-
Я вам рекомендую, выгрузить таблицу в файлик
Через notepad++ сделать замену через регулярку
И заново залить
Дело 5 минут.
Похоже придется так… спасибо
CostaRica
Это не сложно, недавно делал такое.
Если есть возможность сделать копию базы и выдать на нее доступ, я бы мог показать.
Описывать здесь всю процедуру не вижу смысла, это как в той истории, когда знаешь точку, по которой надо ударить кувалдой.
Sitealert
Пройтись по таблице скриптом SELECT/UPDATE – «два пальца об асфальт».
ivan-lev
Sitealert, у каждого свой уровень «двупальцевости»..
Для кого-то «пройтись по таблице» да ещё и «скриптом» с какими-то «SELECT/UPDATE» — это абракадабра полная.. )
DF™
Я думаю можно такое сделать с помощью UPDATE и строковых функций: SUBSTRING(str,pos,len), LOCATE(substr,str) без всяких регексов одним запросом.