2016-02-26 52 views
-3

替換字符串設定與價值請任何一個可以提供一些想法,如何替換甲骨文.eg與值設置字符串: -正則表達式 - 在Oracle

String Formula: (20+OFR)/(10-OGR) 需要更換OFR=100 and OGR=50

字符串公式正在動態變化。

預期的結果(20+OFR)/(10-OGR)= (20+100)/(10-50)

+0

不應該爲迭代的'replace'應用程序完成這種工作嗎?替換(,'OFR',<保存OFR>的變量),'OGR',<保存OGR>的變量)''?我讀錯了嗎? – collapsar

+0

感謝Musakkhir,你可能會提出一些想法來迭代這個String。 –

+0

這個公式來自一個列嗎?代碼在代碼結束之前是否會被替換?你會在PL/SQL代碼中選擇它,進行替換並使用公式嗎?請使用編輯鏈接編輯您的文章並更新標籤,以提供有關環境和預期用途的更多信息。 –

回答

0

我不知道你想達到的目標。但是,如果您想創建動態公式,則必須使用select語句:從「雙重」中選擇「您的公式」以獲得結果。

這裏是一個示例代碼:

declare 
v_ofr NUMBER :=100 ; 
v_ogr NUMBER := 50; 
v_sql VARCHAR2(500); 
BEGIN 

v_sql := 'select (20+ ' || v_ofr || ')/(10-' || v_ogr ||') from dual'; 

execute immediate v_sql; 

DBMS_OUTPUT.PUT_LINE (v_sql); 

end; 
+0

Thanks @Burhan,我不期待這樣,我不得不創建一個公式列有(20 + OFR)/(10-OGR)的SP,它可以根據用戶的選擇改變動態,現在他們把字符串像OFR ,OGR將被替換爲相應的值。 –

0

要回答你的基本問題「如何在Oracle價值替換字符串的設置」,看看對regex in Oracle支持。例如,你可以用下面的實現自己的例子:

select 
     REGEXP_REPLACE(REGEXP_REPLACE('(20+OFR)/(10-OGR)', 
        'OFR', 
        '100'), 'OGR',50) 
     as "names after regexp" 
     from DUAL; 

除此之外,你可能有更多的代碼,類似於上面的布爾汗的東西表現。希望有所幫助。