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

kurya4iy

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

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

dandandan

Мой дом здесь!
Регистрация
7 Авг 2008
Сообщения
1.036
Реакции
292
Как сразу заменить несколько значений, если их штук 50 например

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

Можно использовать mysqli_multi_query(). И туда вставить все свои запросы через точку с запятой. Для просмотра ссылки Войди или Зарегистрируйся
 

ElenaBeck123!

Создатель
Регистрация
24 Май 2017
Сообщения
20
Реакции
7
@dandandan: откуда mysqli_multi_query взялось? в задаче нет ни слова о php.
@kurya4iy: это можно сделать и одним запросом `колонка` = replace(replace(replace(колонка, 'текст1', 'текст2'), 'текст3', 'текст4'), 'текст5', 'текст6') и т.д. Если вы действительно собираете sql запрос по частям в php, то написать рекурсивную функцию, которая будет строить ряд реплейсов, не составляет проблем.
 

newminer

Создатель
Регистрация
21 Апр 2015
Сообщения
15
Реакции
4
Я бы посоветовал, если подобные задачи нужно выполнять регулярно, написать хранимую процедуру.
В качестве ее входных параметров - текст1 и текст2.
 

Trytone

Постоялец
Регистрация
14 Май 2016
Сообщения
113
Реакции
19
Всего 50 замен - это не много.
Я бы просто размножил строчки в excel, вставив в нужные места параметры замен.
А потом в текстовый файл выгрузил и по одной строчке. И потом по-запросно в MyAdmin зафигачил бы все эти строки.
Делов на 15 минут.
 

prosp

Создатель
Регистрация
9 Апр 2012
Сообщения
48
Реакции
23
Самый простой запрос в реляционных DB:

UPDATE users SET user_name = 'Gandalf White' WHERE user_name = 'Albus Dumbledore'
 

Ambleranona

Создатель
Регистрация
24 Окт 2018
Сообщения
19
Реакции
9
Создать переменную "типа массив", где все значения идут одной строкой с разделителем (напирмер запятая).
Создать цикл прмямо в запросе ( WHILE i < 50 DO ... END WHILE; )
Прокручиваем запрос UPDATE каждый раз с новым значением из массива.
SET i=i+1;

Профит
 
Сверху