如何在Oracle中使用regexp_replace
替换多个字符串?
formula = 1*3
formula detail (1->value1, 2->value3, 3->value3)
我想要结果
formula = value1*value3
答案 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>