oracle中replace怎么用,在Oracle中有多个REPLACE功能

对于

how to replace multiple strings together in Oracle的接受答案建议使用嵌套的REPLACE语句,我不认为有更好的方法。

如果你要大量使用这个,你可以考虑编写自己的功能:

CREATE TYPE t_text IS TABLE OF VARCHAR2(256);

CREATE FUNCTION multiple_replace(

in_text IN VARCHAR2,in_old IN t_text,in_new IN t_text

)

RETURN VARCHAR2

AS

v_result VARCHAR2(32767);

BEGIN

IF( in_old.COUNT <> in_new.COUNT ) THEN

RETURN in_text;

END IF;

v_result := in_text;

FOR i IN 1 .. in_old.COUNT LOOP

v_result := REPLACE( v_result,in_old(i),in_new(i) );

END LOOP;

RETURN v_result;

END;

然后使用它:

SELECT multiple_replace( 'This is #VAL1# with some #VAL2# to #VAL3#',NEW t_text( '#VAL1#','#VAL2#','#VAL3#' ),NEW t_text( 'text','tokens','replace' )

)

FROM dual

This is text with some tokens to replace

如果所有的令牌都具有相同的格式(‘#VAL’|| i ||’#’),那么可以省略参数in_old并使用循环计数器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值