有如下字符串 a=badfd+dfddc+ddasd+sfd
现在要截取符号之间的字段,也就是badfd;dfddc;ddasd;sfd这四个结果,现提供一下PLSQL语言,
大侠帮助一下,修改修改
declare
v_sql long;
i number :=1;
j number :=1;
begin
v_sql:='a=badfd+dfddc+ddasd+sfd';
loop
select instr(v_sql,'+',1,j) into i from dual;
j:=j+1;
exit when i=0;
dbms_output.put_line(i);
end loop;
end;
现在要截取符号之间的字段,也就是badfd;dfddc;ddasd;sfd这四个结果,现提供一下PLSQL语言,
大侠帮助一下,修改修改
declare
v_sql long;
i number :=1;
j number :=1;
begin
v_sql:='a=badfd+dfddc+ddasd+sfd';
loop
select instr(v_sql,'+',1,j) into i from dual;
j:=j+1;
exit when i=0;
dbms_output.put_line(i);
end loop;
end;
解决方案 »
- sqlplus 和 oracle工具如何处理set xxx这种语句
- object browser如何导入.csv数据
- win2003下oracle9i数据库实例停止
- 求一分组sql语句。
- 在Oracle9i下面,那个命令和Oracle8i的Svrmgrl的功能一样呢?
- 请教!!如何下载oracle 10G!!?
- ■■高分请教一个SQL语句:ORACLE数据库,请看叙述■■
- 能够平安回家坐到电脑前上csdn网真好!快过年了,Oracle版经常出差的朋友,看看我的经历。
- oracle 11g r2 安装时参数设置问题
- 查询求解!
- oracle ERP 菜鸟求助!!!!!
- oracle中遇到无法插入的汉字该怎么办
--这样取吧
select regexp_substr(regexp_replace('a=badfd+dfddc+ddasd+sfd ','[a-zA-Z]+=',''),
'[^+]+',1,rownum) result from dual
connect by rownum<=length(regexp_replace('a=badfd+dfddc+ddasd+sfd ','[a-zA-Z]+=',''))
-length(replace(regexp_replace('a=badfd+dfddc+ddasd+sfd ','[a-zA-Z]+=',''), '+', ''))+1;
/*
RESULT
----------badfd
dfddc
ddasd
sfd
*/
--按你的写法
declare
v_sql long;
i number :=1;
j number :=1;
begin
v_sql:='a=badfd+dfddc+ddasd+sfd';
v_sql:=regexp_replace(v_sql,'[a-zA-Z]+=','');
loop
select instr(v_sql,'+',1,j) into i from dual;
dbms_output.put_line(regexp_substr(v_sql,'[^+]+',1,j));
j:=j+1;
exit when i=0;
end loop;
end;
/
/*
badfd
dfddc
ddasd
sfd
*/
regexp_substr