用pl/SQL写一个函数:传入的值是 {name}yun{worker_id}123456{email}[email protected] 等以{}+value形式的一组有规则的字符
要求根据{}中的内容得到value
如果输入的{name} 得到yun
输入{worker_id} 得到123456这个可以用instr 和substr函数做吗 ?
给出具体的答案  
严重给分。谢谢

解决方案 »

  1.   

    给字符串后面拼个{,再进行截取。查查instr用法和substr用法,截取下就可以了。
      

  2.   

    -- 再来增一下分(我需要分):
    create or replace function name_value(i_str varchar2,i_name varchar2)
    return varchar2
    is
      v_str varchar2(4000);
      str_from number(4);   -- 子串起始位置
      str_to number(4);     -- 子串结束位置
    begin
      v_str := i_str||'{}';
      str_from := instr(v_str,'}',instr(v_str,i_name),1);
      str_to := instr(v_str,'{',instr(v_str,i_name),1);
      return substr(v_str, str_from+1, str_to-str_from-1);
    end;
    /drop table t purge;
    create table t(names varchar2(4000));
    insert into t(names) values('{name}yun{worker_id}123456{email}[email protected]');
    commit;column names for a60;
    column value for a30;select names, name_value(names,'name') as value from t
    union all
    select names, name_value(names,'worker_id') from t
    union all
    select names, name_value(names,'email') from t;