Oracle还是SQL中字符函数中有没有替换功能
有这个函数吗?我打入stuff又没有这样的函数。实现功能就是如字符串‘agcdff',我想把c换成d,就是换指定位置否的字符,我用了最差尽的方法,就是用substr(‘a...
有这个函数吗?我打入stuff 又没有这样的函数。实现功能就是如字符串‘agcdff',我想把c换成d,就是 换指定位置否的字符,我用了最差尽的方法,就是用substr(‘agcdff',0,2)||'d'||substr(‘agcdff',4,3).有什么好办法吗?这个应该很简单的。
展开
4个回答
2013-07-08
展开全部
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
换指定位置,就是你的写法,用substr
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select REPLACE( '00000921000001 ', '921',
'924') from dual;
select translate(
'00000921000001 ', '921', '924') from dual;
'924') from dual;
select translate(
'00000921000001 ', '921', '924') from dual;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select replace('agcdff','c','d') from dual;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询