powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос по множественной замене значений в строке
11 сообщений из 11, страница 1 из 1
Вопрос по множественной замене значений в строке
    #38480817
ser79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Ситуация такая, есть таблица t1 со столбцом следующих данных (запятая просто как разделитель текстовой информации в строке):
1: a1, a2 , a3, a4.......
2: b1, b2, b3, b4......
3: c1 , c2, c3 , c4......

Есть таблица rt1 с 2 столбцами (искомое | заменяемое):
1: a2 | aa2
2: x1 | xx1
3: c1 | cc1
4: v1 | vv1
5: c3 | cc3
...

Необходимо заменить значения таблицы t1 (выделены жирным) заменяемыми значениями таблицы rt1, т.е. должно получиться следующее:
1: a1, aa2 , a3, a4.......
2: b1, b2, b3, b4......
3: cc1 , c2, cc3 , c4......

Споткнулся об то, что в строке 3 таблицы t1 необходимо заменить 2 (а в реале может быть и 3 и более!) значения. Прошу помощи!
...
Рейтинг: 0 / 0
Вопрос по множественной замене значений в строке
    #38480862
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Операция - одноразовая или регулярная?
...
Рейтинг: 0 / 0
Вопрос по множественной замене значений в строке
    #38481050
ser79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного не понял, что вы имеете ввиду. Одноразовая.
...
Рейтинг: 0 / 0
Вопрос по множественной замене значений в строке
    #38481087
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда разбейте мультиполе на отдельные поля, выполните замену в каждом отдельном поле, затем соберите обратно.
Если записей не очень дохрена - можно даже вывалить для этого данные в Эксель. Там бить на поля удобнее.
...
Рейтинг: 0 / 0
Вопрос по множественной замене значений в строке
    #38481098
ser79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такой вариант непойдёт, потому что в строке таблицы t1 нет чёткого разделителя. Искаться может целиком комбинация "b1, b2" и заменяться на "bb1 bb2". Тут всё зависит от того, какое значение первой колонки в таблице rt1.
Записей мало, в t1 и rt1 ну по 20-30 максимум.
...
Рейтинг: 0 / 0
Вопрос по множественной замене значений в строке
    #38481112
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таком случае выполните пачку запросов в рамках процедуры - курсор по одной из таблиц + препаред статемент.
...
Рейтинг: 0 / 0
Вопрос по множественной замене значений в строке
    #38481122
ser79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно в виде примера накидать? Так непонятно...
...
Рейтинг: 0 / 0
Вопрос по множественной замене значений в строке
    #38481151
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идеологически:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create procedure
declare cur cursor as select s1,s2 from t2
declare stop handler for no record
do
fetch cur into @s1, @s2
prepare stmt from update t1 set f1=replace(f1,@s1,@s2)
execute stmt
loop
stop:
end procedure
...
Рейтинг: 0 / 0
Вопрос по множественной замене значений в строке
    #38481190
ser79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, буду пробовать!

А элегантным селектом вопрос не разрешить?
...
Рейтинг: 0 / 0
Вопрос по множественной замене значений в строке
    #38481194
ser79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С использованием REPLACE и какими-нибудь хитрыми объединениями t1 и rt1?
...
Рейтинг: 0 / 0
Вопрос по множественной замене значений в строке
    #38481314
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не вопрос...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create procedure
cycle: loop
update t1, t2 set t1.txt = replace(t1.txt, t2.s1, t2.s2) where instr(t1.txt, t2.s1) > 0;
select row_count() into @cnt
if @cnt = 0 then
  leave done
end if
end loop cycle
done:
end procedure


Но потенциально можно зациклиться.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос по множественной замене значений в строке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]