DELIMITER $$
CREATE FUNCTION replace_in_array(
input_string VARCHAR(255),
split_delimiter VARCHAR(1),
number INT,
targetStr VARCHAR(255)
) RETURNS VARCHAR(255)
BEGIN
DECLARE temp_array VARCHAR(255) DEFAULT input_string;
DECLARE result VARCHAR(255) DEFAULT '';
DECLARE part VARCHAR(255);
DECLARE counter INT DEFAULT 1;
-- 循环处理字符串,直到分割完所有部分
WHILE temp_array != '' DO
-- 提取当前部分
SET part = SUBSTRING_INDEX(temp_array, split_delimiter, 1);
SET temp_array = SUBSTRING(temp_array, CHAR_LENGTH(part) + CHAR_LENGTH(split_delimiter) + 1);
-- 如果是目标位置,则替换为targetStr
IF counter = number THEN
SET part = targetStr;
END IF;
-- 将当前部分与之前的结果拼接
IF result != '' THEN
SET result = CONCAT(result, split_delimiter);
END IF;
SET result = CONCAT(result, part);
-- 增加计数器
SET counter = counter + 1;
END WHILE;
-- 返回最终结果
RETURN result;
END$$
DELIMITER ;
MYSQL实现动态替换字符串某个下标位置的值的函数
于 2024-03-05 22:12:37 首次发布