【问题标题】:REPLACE a variable with another variable which is stored in a table/variable用存储在表/变量中的另一个变量替换一个变量
【发布时间】:2022-11-17 04:41:15
【问题描述】:

我有一个表 VARIABLE_REPLACE

DATA1 var
TBR_SP lc_location

我有一个要求,如果一个字符串变量有“TBR_SP”,那么该字符串应该被替换为 lc_location 变量的值。

declare  

str varchar2(1000):='TBR_SP123'; 

data1 varchar2(1000); 

var varchar2(1000);

 lc_location  varchar2(1000):='LONDON';

 to_be_replaced varchar2(1000); 

 sql1 varchar2(1000); 

 BEGIN  

 SELECT data1, var INTO to_be_replaced, var FROM VARIABLE_REPLACE;

 --to_be_replaced:='TBR_SP';

 --var:='lc_location'; 

 str := REPLACE(str ,to_be_replaced ,var ); 

 dbms_output.put_line(str); 

 END; 

 /

以上块返回:lc_location123 预计是 LONDON123。

尝试立即执行,尝试替换两次。

【问题讨论】:

    标签: plsql replace execute-immediate


    【解决方案1】:

    使用关联数组而不是单个变量怎么样?这样您就可以参考(例如)my_array(var) 来检索与var 中的任何内容关联的值。

    create table variable_replace (data1, var) as
    select 'TBR_SP', 'lc_location' from dual;
    
    declare
        str varchar2(1000) := 'TBR_SP123';
        var varchar2(1000);
        lc_location varchar2(1000) := 'LONDON';
        to_be_replaced varchar2(1000);
        
        type var_list is table of varchar2(200) index by varchar2(100);
        vars var_list;
    begin
        vars('lc_location') := 'LONDON';
    
        select data1, var into to_be_replaced, var
        from   variable_replace;
    
        str := replace(str, to_be_replaced, vars(var));
    
        dbms_output.put_line(str);
    end;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 2012-10-16
      • 1970-01-01
      • 2019-11-01
      • 2019-09-01
      • 2014-03-13
      • 2018-09-22
      相关资源
      最近更新 更多