【问题标题】:REGEXP_REPLACE how to using multiple replacement_stringREGEXP_REPLACE 如何使用多个replacement_string
【发布时间】:2019-09-13 05:59:54
【问题描述】:

如何在 oracle 中使用regexp_replace 进行多个替换字符串?

formula = 1*3

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

我想要结果

formula = value1*value3

【问题讨论】:

  • 请让我们知道您到目前为止所做的尝试
  • 查看thisthis
  • 我已经尝试使用 regexp_substr 和 level。但它不完整,它只是得到算术运算符

标签: regex oracle oracle11g


【解决方案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>

【讨论】:

  • 公式是名称字段列,值是计算公式。并且值为动态值。
  • 我尝试使用替换,但它是静态的
  • 对不起,我还是不明白你在说什么。如果可能,请编辑您发布的初始消息,更详细地解释问题,提供 CREATE TABLE 和 INSERT INTO 示例数据,附上屏幕截图......任何您认为可能对我们帮助您有用的内容。
猜你喜欢
  • 2019-07-02
  • 2020-01-06
  • 2018-08-05
  • 2016-08-31
  • 2017-02-26
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
相关资源
最近更新 更多