1

これが私が解決しようとしている問題です(Oracle v10g +)。
表 1 データ:

ID        Text_Formula    
1         'FIELD1 = XYZ + ABC'

表 2 データ:

ID       Formula_Component      Actual_Component    
1              XYZ                  a.br_width    
1              ABC                  b.br_height

望ましい結果:

ID       Text_Formula    
1        'FIELD1 = a.br_width + b.br_height'

表 2 には、任意の数の行を含めることができます。LEAD、LAG、xmlagg を REPLACE と組み合わせて使用​​してバリエーションを試しましたが、うまくいくものは見つかりませんでした。どんなポインタでも大歓迎です!

4

2 に答える 2

0

この操作用の関数を作成し、この関数を table1 からの選択クエリで使用する必要があると思います。関数は次のようにする必要があります。

create or replace function transform_data(p_input in varchar2) return varchar2
is
    v_result varchar2(2000);
    v_col_value varchar2(200);
begin
    v_result := p_input;

    for rec in (select * from table2)
    loop
        if instr(v_result, rec.Formula_Component) > 0 then
            v_result := replace(v_result, rec.Formula_Component, rec.Actual_Component);
        end if;
    end loop;

    return v_result;
end;
于 2013-10-03T14:38:03.383 に答える