Oracle还是SQL中字符函数中有没有替换功能

有这个函数吗?我打入stuff又没有这样的函数。实现功能就是如字符串‘agcdff',我想把c换成d,就是换指定位置否的字符,我用了最差尽的方法,就是用substr(‘a... 有这个函数吗?我打入stuff 又没有这样的函数。实现功能就是如字符串‘agcdff',我想把c换成d,就是 换指定位置否的字符,我用了最差尽的方法,就是用substr(‘agcdff',0,2)||'d'||substr(‘agcdff',4,3).有什么好办法吗?这个应该很简单的。 展开
 我来答
匿名用户
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
micro0369
2013-07-08 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:3927万
展开全部
换指定字符串用replace

换指定位置,就是你的写法,用substr
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水木葫芦娃
推荐于2018-05-11 · TA获得超过100个赞
知道小有建树答主
回答量:133
采纳率:50%
帮助的人:41.1万
展开全部
select REPLACE( '00000921000001 ', '921',
'924') from dual;
select translate(
'00000921000001 ', '921', '924') from dual;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0319a0e
2013-07-08 · TA获得超过2.2万个赞
知道小有建树答主
回答量:2080
采纳率:85%
帮助的人:1138万
展开全部
select replace('agcdff','c','d') from dual;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式