oracle怎么截取逗号,oracle截取括号内容

Oracle中怎样用存储过程将一段字符串以逗号为界截取,并将得到的子串存到另一张表中

--通过游标遍历调用方法拆取存表:

创新互联专注于东丰企业网站建设,响应式网站建设,商城网站建设。东丰网站建设公司,为东丰等地区提供建站服务。全流程定制制作,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

--方法

create or replace function f_test_substr(

prm1 varchar2,    --地

prm2 varchar2 ,   --名称

prm3 varchar2,    --IP

prm4 varchar2    --结果

)

return varchar2

as

v_n int:=0;  --第几次取

v_l int;  --:截取次数

v_s varchar2(2000);  --处理拆分字符串

v_s1 varchar2(200);  --本次拆分

v_s2 varchar2(200);  --本次剩余

v_type varchar2(100);  --设备类型

v_code varchar2(100);  --设备编号

v_desc varchar2(100);  --设备描述

v_errmsg varchar2(200);

begin

v_l:=length(prm4)-length(replace(prm4,';',''));

v_s:=prm4||';';

v_s1:=substr(v_s,1,instr(v_s,';',1,1));

v_s2:=replace(v_s,v_s1,'');

while v_n=v_l loop

v_s2:=replace(v_s2,v_s1,'');

v_s1:=substr(v_s1,1,length(v_s1)-1);

v_type:=substr(v_s1,1,instr(v_s1,',',1,1)-1);

v_code:=substr(v_s1,instr(v_s1,',',1,1)+1,instr(v_s1,',',1,2)-instr(v_s1,',',1,1)-1);

v_desc:=substr(v_s1,instr(v_s1,',',1,2)+1,instr(v_s1||',',',',1,3)-instr(v_s1,',',1,2)-1);

insert into t_test_str(a,b,c,d,e,f) values(prm1,prm2,prm3,substr(v_type,instr(v_type,']',1)+1),v_code,v_desc);

v_n:=v_n+1;

v_s1:=substr(v_s2,1,instr(v_s2,';',1,1));

end loop;

commit;

return '成功';

exception

when others then

v_errmsg:=substr(sqlerrm,1,200);

return v_errmsg ;

end;

--存过

create or replace procedure p_test_substr1(o_result out varchar2)

as

v_a varchar2(20);

v_b varchar2(20);

v_c varchar2(20);

v_d varchar2(2000);

v_num int;

cursor c_str is

SELECT * from t_test_substr

;

begin

select count(1) into v_num from t_test_substr;

while v_num0 loop

open c_str;

loop

FETCH c_str INTO

v_a,v_b,v_c,v_d;

EXIT WHEN c_str%NOTFOUND;

o_result:=f_test_substr(v_a,v_b,v_c,v_d);

v_num:=v_num-1;

end loop;

CLOSE c_str;

end loop;

end;

效果见图:

请问如何在Oracle中截取第一个逗号和第二个逗号之间的字符串

select substr('123,123456,123456789',

        instr('123,123456,123456789', ',', 1, 1) + 1,

        instr('123,123456,123456789', ',', 1, 2) -

        instr('123,123456,123456789', ',', 1, 1) - 1)

from dual;

Oracle语句怎么截取{和:之间的值?

如果字段存的就是这个,那么这个应该是字符串吧,那么就分几步操作。

(1)定位,定位{和:的位置,从现在来看有两种可能,第一种

这是两个字段,分别是{12345:67:8}和{ABC:0:9},那就简单了{肯定是1,所以这个也就不需要定位了,只需要定位第一个冒号的位置。

定位的函数应该是instr

第二种:{12345:67:8}{ABC:0:9}是一个字段的内容,那就麻烦一些,不过也能做,希望不是这样的,因为这个就要麻烦很多了。正则倒是能做,不过正则都要测试,我可没有相应的环境做测试。这里也就不写了,如果是这种,那么自己翻一翻正则函数的用法,应该能写出来。

(2)截取,如果是第一种,那么定位了第一个冒号位置以后,用这个位置-2,也就是

instr(字段,':',1)-2这就是截取的长度,

从第二位开始截取,截取这个长度就可以substr(字段,2,instr(字段,':',1)-2)

这样的话,{12345:67:8}换算到内部就是substr({12345:67:8},2,5(7-2)),【7-2说明5的来源,第一个冒号在第7位】,截取出来就是12345

还是那句话,如果是第二种可能,那么就要找每一个{的位置,然后找在{后面距离最近的冒号的位置,然后再一个个的截取操作,正则应该可以操作,不过我还是那句话,需要测试,意思和这个截取函数差不多,自己好好理解一下应该就能操作了。

Oracle中怎样将字段字符串以逗号为界截取,并将得到的子串通过函数解释后再拼接成一个字段

001一定对应的是a吗?002-b,003-c?

那就用REPLACE()

select 

replace(replace(replace('001,002,003','001','a'),'002','b'),'003','c') 

from table

公司网络受限,没法传图了。。。

只能发一下了,测试的数据

select replace(replace(replace('001,002,003','001','a'),'002','b'),'003','c') from dual

REPLACE(REPLACE(REPLACE('001,002,003','001','A'),'002','B'),'003','C')

a,b,c

oracle 数据怎么根据逗号截取数据

JS写法根本没有必要,你写个存储过程,把ID传进去就可以了,用SUBSTR函数,结合ORACLE中提供的正则表达式就可以完全可以搞定,

你可以去看看这个,可能对你有用,有用记得散分


名称栏目:oracle怎么截取逗号,oracle截取括号内容
链接分享:http://azwzsj.com/article/dsipegi.html