Ответ 1
Матрешка-путь; -)
REPLACE(REPLACE(REPLACE(example, '3', 'test') , '2', 'test') , '1', 'test')
У меня есть это
UPDATE table
SET example = REPLACE(example, '1', 'test')
WHERE example REGEXP '1$'
Таким образом, этот код заменяет все экземпляры "1" в поле "example" "test".
Я хочу повторить это для 2, 3, 4 и т.д.
Но было бы очень неэффективно использовать отдельные запросы.
Я могу сделать это одним запросом?
Спасибо
Матрешка-путь; -)
REPLACE(REPLACE(REPLACE(example, '3', 'test') , '2', 'test') , '1', 'test')
Хранимая процедура.
Учитывая, что у вас есть таблица "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;