mysql修改语句 数据库中有如下记录

id name age sex beizhu
1 张三 20 男 namezhangsanage20sexnanid412325196805141974
2 李四 52 女 namelisiage52sexnvid220315198406170517
3 王五 27 男 namewangwuage27sexnanid32010519802160814
4 赵六 45 女 namezhaoliuage45sexnvid431245198503061872
我要把"beizhu" 字段里age后面的数字,统一批量修改成99,该怎么写语句?

--创建一个函数
delimiter &&
create function f1( str varchar(100))
BEGIN
return(select replace(str,
(substr(str,
locate('age',str)+3,
locate('sex',str)-
(locate('age',str)+3))),
'99'));
end&&
delimiter ;
--调用时
update 表名 set beizhu=f1(beizhu) where id=4;--这样改一列
update 表名 set beizhu=f1(beizhu);--beizhu列全部改

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-15
update 表名
set beizhu = substring(beizhu,0,CHARINDEX('age',beizhu )) +'age99'+substring(beizhu ,
CHARINDEX('sex',beizhu ),
len(beizhu )-CHARINDEX('sex',beizhu))
第2个回答  推荐于2017-10-18
update `表名` set `beizhu` = replace(`beizhu` , 'age'+`表名`.age , 'age99') where 1本回答被提问者采纳
第3个回答  2011-09-15
update 表名 set beizhu = concat( left(beizhu, instr(beizhu,'age')-1), 'age99', right(beizhu, length(beizhu) - instr(beizhu,'age') - 4);
刚测过没有问题
第4个回答  2011-09-16
update 表名 set 列名 = '4'+substring(列名,2,len(列名)-1)
相似回答