首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换链,plsql

问替换链,plsql
EN

Stack Overflow用户
提问于 2020-08-03 21:34:01
回答 1查看 25关注 0票数 1

有没有办法避免一系列的批量替换?即

代码语言:javascript
复制
select 
replace(replace(replace(replace( replace(replace(replace(replace(replace(replace(replace(replace(replace(

some_string

, '-&alpha;', '-alpha'), '&alpha;', 'alpha'), '-&beta;', '-beta'), '&beta;', 'beta'), '-&gamma;', '-gamma'), '&gamma;', 'gamma'), '-&delta;', 'delta'), '&delta;', 'delta'), '</', '<'), '<sub>'), '<SUB>'), '<i>'), '<sup>')
from dual

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-08-03 21:41:00

不幸的是没有。我的一个同事最近写了一个PL/SQL函数来做这件事,大概是这样的:

代码语言:javascript
复制
PACKAGE BODY string_utils IS

   FUNCTION multi_replace
      ( p_string    VARCHAR2
      , p_search1   VARCHAR2
      , p_replace1  VARCHAR2 DEFAULT NULL
      , p_search2   VARCHAR2 DEFAULT NULL
      , p_replace2  VARCHAR2 DEFAULT NULL
      , p_search3   VARCHAR2 DEFAULT NULL
      , p_replace3  VARCHAR2 DEFAULT NULL
      , p_search4   VARCHAR2 DEFAULT NULL
      , p_replace4  VARCHAR2 DEFAULT NULL
      , p_search5   VARCHAR2 DEFAULT NULL
      , p_replace5  VARCHAR2 DEFAULT NULL
      , p_search6   VARCHAR2 DEFAULT NULL
      , p_replace6  VARCHAR2 DEFAULT NULL
      , p_search7   VARCHAR2 DEFAULT NULL
      , p_replace7  VARCHAR2 DEFAULT NULL
      , p_search8   VARCHAR2 DEFAULT NULL
      , p_replace8  VARCHAR2 DEFAULT NULL
      , p_search9   VARCHAR2 DEFAULT NULL
      , p_replace9  VARCHAR2 DEFAULT NULL
      ) RETURN          VARCHAR2
   IS
      l_result_str   VARCHAR2(32767) := p_string;
   BEGIN
      IF p_search1 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search1, p_replace1);
      END IF;

      IF p_search2 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search2, p_replace2);
      END IF;

      IF p_search3 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search3, p_replace3);
      END IF;

      IF p_search4 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search4, p_replace4);
      END IF;

      IF p_search5 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search5, p_replace5);
      END IF;

      IF p_search6 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search6, p_replace6);
      END IF;

      IF p_search7 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search7, p_replace7);
      END IF;

      IF p_search8 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search8, p_replace8);
      END IF;

      IF p_search9 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search9, p_replace9);
      END IF;

      RETURN l_result_str;

   END multi_replace;

END;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63230445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档