对于

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并使用循环计数器。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐