REGEXP_REPLACE как использовать несколько замещающих_строк - PullRequest
1 голос
/ 24 апреля 2019

как сделать несколько строк замены, используя regexp_replace в Oracle?

formula = 1*3

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

хочу результата

formula = value1*value3

1 Ответ

1 голос
/ 24 апреля 2019

Я не понимаю, что это:

formula = 1*3

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

на самом деле представляет. Какой первый ряд? Это строка, хранящаяся в какой-то таблице? Это строка хранится в переменной? Это полная строка или строка просто 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...