Подтвердить что ты не робот

Многопользовательский запрос MYSql

У меня есть это

UPDATE  table 
SET  example = REPLACE(example, '1', 'test') 
WHERE example REGEXP '1$'

Таким образом, этот код заменяет все экземпляры "1" в поле "example" "test".

Я хочу повторить это для 2, 3, 4 и т.д.

Но было бы очень неэффективно использовать отдельные запросы.

Я могу сделать это одним запросом?

Спасибо

4b9b3361

Ответ 1

Матрешка-путь; -)

REPLACE(REPLACE(REPLACE(example, '3', 'test') , '2', 'test') , '1', 'test') 

Ответ 2

Хранимая процедура.

Учитывая, что у вас есть таблица "lut" с набором значений, которые вы хотите заменить в поле "content" из таблицы, называется "example"

delimiter //
CREATE PROCEDURE myreplace()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE lv CHAR(64);
DECLARE li INT;
DECLARE lut CURSOR FOR SELECT id,value FROM lut l;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN lut;
lut_loop: LOOP
FETCH lut INTO li,lv;
IF done THEN
LEAVE lut_loop;
END IF;
update example set content = replace(content,lv,li);
END LOOP; 
CLOSE lut;
END;
//
delimiter ;
call myreplace();
drop procedure myreplace;