【发布时间】:2019-09-13 05:59:54
【问题描述】:
如何在 oracle 中使用regexp_replace 进行多个替换字符串?
formula = 1*3
formula detail (1->value1, 2->value3, 3->value3)
我想要结果
formula = value1*value3
【问题讨论】:
如何在 oracle 中使用regexp_replace 进行多个替换字符串?
formula = 1*3
formula detail (1->value1, 2->value3, 3->value3)
我想要结果
formula = value1*value3
【问题讨论】:
我不明白这是什么:
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>
【讨论】: