![]() |
![]() |
#1 |
Senior Member
Профессор
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780
|
![]()
Можно ли SQL запросом удалить все что находится внутри квадратных скобок?
То есть, есть в таблице есть типа таких записей: [aaa bbb cc]ddd eee[/aaa] [aaa xxx xxx]ddd eee[/aaa] Нужно получить: ddd eee |
![]() |
![]() |
![]() |
#2 |
Думаю, что надо худеть
Академик
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 632655
|
![]()
Да можно, у mysql есть функции регулярных выражений.
Сейчас гляну чтобы вспомнить и напишу (но без проверки на реальной бд напишу). По идее, вот так будет: Код:
UPDATE table_name SET field_name= REPLACE(field_name, REGEXP '\\[.*?\\]', '') Последний раз редактировалось XPraptor; 20.12.2020 в 13:04. |
![]() |
![]() |
Сказали спасибо: |
![]() |
#3 |
Senior Member
Профессор
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780
|
![]()
Спасибо, попробую потестить
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Профессор
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780
|
![]()
Что-то пошло не так с синтаксисом.
Получаю такую ошибку: [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near |
![]() |
![]() |
![]() |
#5 |
Слесарь-сайтосборщик
Доцент
Регистрация: 22.06.2020
Адрес: Замкадье
Сообщений: 403
Сказал(а) спасибо: 985
Получил(а) "Спасибо": 1,178
Нарушения: 0/0 (0)
Репутация: 180645
|
![]() |
![]() |
![]() |
Сказали спасибо: |
![]() |
#6 |
Senior Member
Профессор
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780
|
![]()
Такая конструкция заработала,
UPDATE table_name SET field_name=REGEXP_REPLACE(field_name, '\\[.*?\\]', '') Но, если на всю таблицу, то напрочь виснет БД. Если на отдельную запись, всё OK. Похоже что очень ресурсо-требовательная команда для всей базы. В базе более 1 млн записей. Сейчас думаю, может есть какой-то php-скрипт, что-бы он с паузами, перебирал все записи из таблицы и делал перезапись? |
![]() |
![]() |
![]() |
#7 | |
Слесарь-сайтосборщик
Доцент
Регистрация: 22.06.2020
Адрес: Замкадье
Сообщений: 403
Сказал(а) спасибо: 985
Получил(а) "Спасибо": 1,178
Нарушения: 0/0 (0)
Репутация: 180645
|
![]() Цитата:
Код:
UPDATE table_name SET field_name=REGEXP_REPLACE(field_name, '\\[.*?\\]', '') WHERE id>0 AND id<100000 Код:
UPDATE table_name SET field_name=REGEXP_REPLACE(field_name, '\\[.*?\\]', '') WHERE id>99999 AND id<200000 |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Профессор
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780
|
![]() Цитата:
Как-то не реально дробить на большое количество раз. Вот скрипт запустить на ночь, было-бы интереснее. Только в условие я добавлял BETWEEN WHERE `content_id` BETWEEN 6094934 AND 6094934 Не может же из-за этого стока долго? |
|
![]() |
![]() |
![]() |
#9 |
Слесарь-сайтосборщик
Доцент
Регистрация: 22.06.2020
Адрес: Замкадье
Сообщений: 403
Сказал(а) спасибо: 985
Получил(а) "Спасибо": 1,178
Нарушения: 0/0 (0)
Репутация: 180645
|
![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Профессор
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780
|
![]()
Да, для одной записи.
Обычный REPLACE - доли секунды, а этот 7 сек. Тестирую пока с копией базы, на локальном сервере, но сервер мощный. На рабочей базе, собственно тоже такое время для одной записи. На всю рабочую базу не рискнул. |
![]() |
![]() |
![]() |
|
Опции темы | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка - MySQL query error [1615]: Prepared statement needs to be re-prepared | sanek1991 | Хостинг и домены | 19 | 29.07.2020 19:24 |
Помогите с SQL запросом replace | sanek1991 | Веб-строительство | 34 | 16.07.2020 13:26 |
Переход с php5 на php7, если много mysql запросов | ziliboba0213 | Веб-строительство | 31 | 14.07.2020 18:44 |