Есть строка:
{([ab1]+[ab2])*([bc1]+[bc2])*([cd2]+[cd3])}
И коллекция (таблица индекса pls_integer от varchar2 (3)):
[ab1] := 1000
[cd3] := 1000
[bc1] := 10000
[cd2] := 10000
[bc2] := 20000
[ab2] := 20000
К вашему сведению: эта коллекция заполняется через SELECT
, поэтому можно использовать в задаче, которая описана ниже:
Моя цель - заменить символы в строке количеством из этой коллекции и получить:
'(1000+20000)*(10000+20000)*(10000+1000)'
Я уже сделал это в PL / SQL с использованием l oop, затем с помощью регулярного выражения найдите первое вхождение символа из 3 символов, заменив et c. et c.
МОЙ вопрос: возможно ли сделать это одним запросом?
Выбор образца:
SELECT '[ab1]' AS symbol, 1000 AS amt from dual union all
SELECT '[cd3]',1000 from dual union all
SELECT '[bc1]',10000 from dual union all
SELECT '[cd2]',10000 from dual union all
SELECT '[bc2]',20000 from dual union all
SELECT '[ab2]',20000 from dual;