本地mysql数据库版本低,不能用mysql正则替换函数REGEXP_REPLACE,因此用存储过程执行循环调用。
存储过程:
DELIMITER //
DROP PROCEDURE if EXISTS pdu_user; -- 如果存在pdu_user存储过程则删除
CREATE procedure pdu_user(a int) -- 创建无参存储过程,名称为pdu_user
BEGIN
DECLARE i INT; -- 申明变量
SET i = 1; -- 变量赋值
WHILE i<=a DO -- 结束循环的条件: 当i大于a时跳出while循环
-- 往t_t_user表添加数据
update phome_ecms_news_data_1 SET newstext=REPLACE(newstext,'tags-i.html','tags/i/');
SET i = i+1; -- 循环一次,i加1
END WHILE; -- 结束while循环
END
// # 结束定义语句
CALL pdu_user(16476); -- 调用存储过程
DELIMITER ;
16476是tags标签最大id,如果存储过程执行后停止了,需要删除存储过程才能执行。
第二个版本
DELIMITER $$
CREATE PROCEDURE my_procedure()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE (i <= 16476) DO
update phome_ecms_news_data_1 SET newstext=REPLACE(newstext,'tags-i.html','tags/i/');
SET i = i + 1;
END WHILE;
END$$
DELIMITER ;
call my_procedure();
最后完整第三个版本:
DELIMITER $$
CREATE PROCEDURE my_procedure(a INT)
BEGIN
DECLARE i INT DEFAULT 1;
WHILE (i <= a) DO
update phome_ecms_news_data_1 SET newstext=REPLACE(newstext,CONCAT('tags-',i,'.html'),CONCAT('tags/',i,'/'));
SET i = i + 1;
END WHILE;
END$$
DELIMITER ;
call my_procedure(1000);
本文链接:http://78moban.cn/post/16481.html
版权声明:站内所有文章皆来自网络转载,只供模板演示使用,并无任何其它意义!