用pl/SQL写一个函数:传入的值是 {name}yun{worker_id}123456{email}xiachufeng@126.com 等以{}+value形式的一组有规则的字符
要求根据{}中的内容得到value
如果输入的{name} 得到yun
输入{worker_id} 得到123456
这个可以用instr 和substr函数做吗 ?
给出具体的答案
严重给分。。。。。。。。。。。。。。。。谢谢
------解决方案--------------------------------------------------------
- SQL code
create or replace function name_value(i_str varchar2,i_name varchar2)return varchar2is 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}xiachufeng@126.com');commit;column names for a60;column value for a30;select names, name_value(names,'name') as value from tunion allselect names, name_value(names,'worker_id') from tunion allselect names, name_value(names,'email') from t;
------解决方案--------------------------------------------------------