在使用replace函数时往往最后一个被保留了,看起来不舒服,函数增加一个判断最后面的字符和要替换的一样,就截掉。
CREATE DEFINER=`root`@`%` FUNCTION `StringReplace`( str varchar(4000),sp1 varchar(100),sp2 varchar(200) ) RETURNS varchar(4000) CHARSET utf8mb4 COLLATE utf8mb4_general_ci
DETERMINISTIC
BEGIN
#Routine body goes here...
declare str2 varchar(4000);
if StringNULL(str) is null then
return null;
end if;
set str = replace(str,sp1,sp2);
set str2 = SUBSTR(str , CHAR_LENGTH(str) - CHAR_LENGTH(sp2)+1);
if str2 = sp2 then
set str = SUBSTR(str,1,CHAR_LENGTH(str)- CHAR_LENGTH(sp2));
-- select str,str2 ;
end if;
return str;
END
![](https://img.haomeiwen.com/i2787821/3665fea2c0e3f014.png)
网友评论