REGEXP_REPLACE如何使用多个replace_string

时间:2019-04-24 02:31:41

标签: regex oracle oracle11g

如何在Oracle中使用regexp_replace替换多个字符串?

formula = 1*3

formula detail (1->value1, 2->value3, 3->value3)

我想要结果

formula = value1*value3

1 个答案:

答案 0 :(得分:1)

我不明白这是什么:

formula = 1*3

formula detail (1->value1, 2->value3, 3->value3)

实际上代表。第一行是什么?是存储在某个表中的字符串吗?它是存储在变量中的字符串吗?是 complete 字符串,还是 string 只是1*3(不带formula =)?

第二行是什么?和第一个一样。


无论如何:如果我们假装第一行代表一个字符串,而第二行代表您的愿望而不是一些代码,则嵌套REPLACE(即根本没有正则表达式)可以完成这项工作:

SQL> create or replace function f_rep
  2    (par_1 in varchar2, par_2 in varchar2, par_3 in varchar2)
  3  return varchar2
  4  is
  5    l_str varchar2(200) := 'formula = 1*3';
  6  begin
  7    l_str := replace(replace(replace(l_str, '1', par_1),
  8                                            '2', par_2),
  9                                            '3', par_3);
 10    return l_str;
 11  end;
 12  /

Function created.

SQL> select f_rep('value1', null, 'value3') result from dual;

RESULT
--------------------------------------------------------------------------------
formula = value1*value3

SQL>