stuff 是 SQL Server 的函数, 功能是:
删除指定长度的字符并在指定的起始点插入另一组字符
例如:
1> SELECT
2> STUFF(',1,2,3', 1, 1, '') A,
3> STUFF(';A;B;C', 1, 3, 'Z;') B,
4> STUFF('X;Y;Z', 3, 1, 'C') C
5> go
A B C
------ ----- ------
1,2,3 Z;B;C X;C;Z
(1 行受影响)
Oracle 没有这个函数, 但是可以使用 SUBSTR 来实现相同的功能
CREATE OR REPLACE FUNCTION STUFF(
v_BaseStr VARCHAR2,
v_StartIndex INT,
v_Length INT,
v_ReplaceStr VARCHAR2
)RETURN VARCHAR2 IS
BEGIN
RETURN
SUBSTR(v_BaseStr, 1, v_StartIndex - 1) ||
v_ReplaceStr ||
SUBSTR(v_BaseStr, v_StartIndex + v_Length);
END;
/
函数已创建。
SQL> SELECT
2 STUFF (',1,2,3', 1, 1, '') A,
3 STUFF(';A;B;C', 1, 3, 'Z;') B,
4 STUFF('X;Y;Z', 3, 1, 'C') C
5 FROM
6 dual;
A
-----------------------------------------------------
B
-----------------------------------------------------
C
-----------------------------------------------------
1,2,3
Z;B;C
X;C;Z
换指定字符串用replace
换指定位置,就是你的写法,用substr
select REPLACE( '00000921000001 ', '921',
'924') from dual;
select translate(
'00000921000001 ', '921', '924') from dual;
select replace('agcdff','c','d') from dual;