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