create or replace function f_get_value(keystr varchar2,source_str varchar2) return varchar2
is
v_idx number := 0;
v_p_idx number := 0;
v_v_idx number := 0;
v_key_num number := 0;
v_len number := 0;
v_result varchar2(64);
begin
v_key_num := regexp_count(source_str,'{\w+}');
v_len := length(source_str);
v_v_idx := instr(source_str,keystr);
for i in 1..v_key_num loop
v_idx := instr(source_str,'{',1,i);
if v_idx > v_v_idx then
v_p_idx := v_idx;
exit;
end if;
end loop;
if v_p_idx = 0 and v_v_idx != 0 then
v_p_idx := v_len+1;
end if;
v_result := substr(source_str,v_v_idx+length(keystr),v_p_idx-v_v_idx-length(keystr));
return v_result;
exception
when others then
v_result := 'ERROR';
return v_result;
end f_get_value;
解决方案 »
- rac asm 中文件损坏,如何恢复数据?
- php4向oracle10g插入中文时出现乱码,急~散分
- SQL(ORACLE)中的条件和is not null问题
- 能不能直接调用某个变量
- 同时安装oracle8.0.5与oracle9i,如何解决tns端口冲突问题
- Oracle的日期类型怎么写?
- 请问ftp://202.96.64.144/Oracle9iVideo/下载的视频播放时只有声音没有图像,要用什么播放器,装什么插件啊?急!!!!
- CB5+ADO+Oracle如何同时提交多条插入或更新语句?
- 我下载的3cd oracle9i,win2003下安装老死在13%,why
- 请问参数为一个数组的函数,怎么用JAVA调用?还是100分。
- 不懂就要问:想为用户显示公告是否已阅,数据库应如何设计?
- 编写一个函数,将具有某个特殊分隔符的字符串转成数组(Oracle)
create or replace function getValue(str_i_val in varchar2, str_i_key varchar2) return varchar2 as
begin
if instr(str_i_val||'{', str_i_key) = 0 then
return 'NOT FOUND';
else
return substr(str_i_val||'{', instr(str_i_val||'{', str_i_key)+length(str_i_key),
instr(str_i_val||'{', '{', instr(str_i_val||'{', str_i_key)+length(str_i_key)) - (instr(str_i_val||'{', str_i_key)+length(str_i_key)));
end if;
end;第一个参数传入你的这个参数{name}test{worker_id}S0888{EMAIL}[email protected]
第二个参数传入{name}或者{EMAIL}