mysql 批量更新json list里的字段。数组字段需要遍历数组,$[*] 好像不管用,所以写了个存储过程实现mysql 批量更新json list里的key字段
delimiter $$
drop procedure if exists updateUrlName;
create procedure updateUrlName(in oldPassword varchar(500),in newPassword varchar(500))
begin
declare i int;
set i=0;
while i<10 do
update product set base_url=JSON_SET(base_url, CONCAT('$[',i,'].urlName'), newPassword) where JSON_EXTRACT(base_url,CONCAT('$[',i,'].urlName') ) =oldPassword;
set i=i+1;
end while;
end
$$
call updateUrlName('new_value','new_password');
上述方法定义存储过程,假设json list的数组最多10个对象,遍历每一个对象,根据入参的old和new的变量。修改每一个对象的key数据。