Запрос для замены множества строк в БД

kurya4iy

Постоялец
Регистрация
7 Май 2013
Сообщения
59
Реакции
11
Есть шаблон для замены значения текст1 на текст2
UPDATE `таблица` SET `колонка` = replace(колонка, 'текст1', 'текст2')

Как сразу заменить несколько значений, если их штук 50 например
 
Как сразу заменить несколько значений, если их штук 50 например

Только написать для каждой замены свой запрос.

Можно использовать mysqli_multi_query(). И туда вставить все свои запросы через точку с запятой. Для просмотра ссылки Войди или Зарегистрируйся
 
@dandandan: откуда mysqli_multi_query взялось? в задаче нет ни слова о php.
@kurya4iy: это можно сделать и одним запросом `колонка` = replace(replace(replace(колонка, 'текст1', 'текст2'), 'текст3', 'текст4'), 'текст5', 'текст6') и т.д. Если вы действительно собираете sql запрос по частям в php, то написать рекурсивную функцию, которая будет строить ряд реплейсов, не составляет проблем.
 
Я бы посоветовал, если подобные задачи нужно выполнять регулярно, написать хранимую процедуру.
В качестве ее входных параметров - текст1 и текст2.
 
Всего 50 замен - это не много.
Я бы просто размножил строчки в excel, вставив в нужные места параметры замен.
А потом в текстовый файл выгрузил и по одной строчке. И потом по-запросно в MyAdmin зафигачил бы все эти строки.
Делов на 15 минут.
 
Самый простой запрос в реляционных DB:

UPDATE users SET user_name = 'Gandalf White' WHERE user_name = 'Albus Dumbledore'
 
Создать переменную "типа массив", где все значения идут одной строкой с разделителем (напирмер запятая).
Создать цикл прмямо в запросе ( WHILE i < 50 DO ... END WHILE; )
Прокручиваем запрос UPDATE каждый раз с новым значением из массива.
SET i=i+1;

Профит
 
Назад
Сверху