我有这个
UPDATE table
SET example = REPLACE(example, '1', 'test')
WHERE example REGEXP '1$'
所以这段代码将“example”字段中所有的“1”替换为“test”。
我想重复这个过程,对于2、3、4等数字也做同样的操作。
但是使用单独的查询会非常低效。
是否有任何办法可以只用一个查询来完成?
谢谢
套娃方式 ;-)
REPLACE(REPLACE(REPLACE(example, '3', 'test') , '2', 'test') , '1', 'test')
一个存储过程。
假设您有一个名为“lut”的表,其中包含一组要替换在名为“example”的表中的字段“content”中的值。
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;