加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Oracle中有多个REPLACE功能

发布时间:2020-12-12 13:55:50 所属栏目:百科 来源:网络整理
导读:我在oracle中使用REPLACE函数来替换字符串中的值,如 SELECT REPLACE('THE NEW VALUE IS #VAL1#','#VAL1#','55') from dual 所以这可以替换一个值,但是20,应该使用20 REPLACE函数还是有更实用的解决方案。 欢迎所有的想法。 对于 how to replace multiple
我在oracle中使用REPLACE函数来替换字符串中的值,如
SELECT REPLACE('THE NEW VALUE IS #VAL1#','#VAL1#','55') from dual

所以这可以替换一个值,但是20,应该使用20 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并使用循环计数器。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读