有如下字符串 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;
解决方案 »
- dbms_scheduler报错ORA-01438:?求助,求助。。。
- 怎样获得Oracle中的具体数据类型,如varchar char blob...
- 【急】 插入查询异常
- 新的查询问题,ORACLE我试了代码,没解决,求教
- 请教关于用EXECUTE IMMEDIATE 创建索引的问题。
- 求助:帮着写个动态sql语句
- 在客户端上用exp导出8.1.6的数据库时出错(在线等待,急)
- 一个关于where条件的问题
- SELECT * FROM USERS WHERE USER_NAME='ADMIN' AND USER_PWD='ADMIN';这句有错吗?
- 关于多列索引生效的一个问题
- 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