话不多说先上函数代码
字符串指定位置以及指定长度替换为想要的字符串
例:将字符串‘123456789’,从第3位开始数2位,替换为‘一二’ 字符串
SELECT stuff('123456789',3, 2, '一二')
DROP FUNCTION
IF
EXISTS stuff;
DELIMITER $$
CREATE FUNCTION stuff ( str VARCHAR ( 8000 ), startIndex INT, length INT, Newstr VARCHAR ( 8000 ) ) RETURNS VARCHAR ( 8000 )
DETERMINISTIC
BEGIN
RETURN concat(
LEFT ( str, startIndex - 1 ),
Newstr,
RIGHT ( str, length( str ) - LOCATE( SUBSTRING( str, startIndex, length ), str ) - length + 1 )
);
END $$
DELIMITER;
解释下里面的所用到的函数
1、left(str, length)
- 从左开始截取字符串
用法:left(str, length),即:left(被截取字符串, 截取长度)
SELECT LEFT('www.baidu.com',3)
2、right(str, length)
- 从右开始截取字符串
用法:left(str, length),即:left(被截取字符串, 截取长度)
SELECT RIGHT('www.baidu.com',3)
3、substring(str, pos)
截取特定长度的字符串
用法:
substring(str, pos),即:substring(被截取字符串, 从第几位开始截取)
substring(str, pos, length),即:substring(被截取字符串,从第几位开始截取,截取长度)
1.从字符串的第3个字符开始读取直至结束
SELECT SUBSTRING('www.baidu.com', 3)
2.从字符串的倒数第3个字符开始读取,只取2个字符
SELECT SUBSTRING('www.yuanrengu.com', -3, 2)
4、LOCATE(substr,str)
语法一:
LOCATE(substr,str)
返回字符串str中第一次出现子字符串substr的位置(索引从1开始) 。
语法二:
LOCATE(substr,str,pos)
返回字符串str中第一次出现子字符串substr的位置,从位置开始 pos。0 如果substr不在,则 返回str。返回 NULL如果substr 或者str是NULL。