oracle逗号怎么存储,oracle逗号拼接
Oracle中某一表单中的字段里的存放的值为逗号隔开另一表单字段中的多个值,该如何取值
create table stuu(code char(4), course_id varchar2(50),cdate date); --创建表
成都创新互联公司成立10余年来,这条路我们正越走越好,积累了技术与客户资源,形成了良好的口碑。为客户提供成都网站设计、做网站、网站策划、网页设计、域名与空间、网络营销、VI设计、网站改版、漏洞修补等服务。网站是否美观、功能强大、用户体验好、性价比高、打开快等等,这些对于网站建设都非常重要,成都创新互联公司通过对建站技术性的掌握、对创意设计的研究为客户提供一站式互联网解决方案,携手广大客户,共同发展进步。
--插入测试数据
insert into stuu(code,course_id,cdate) values('1','1001',sysdate);
insert into stuu(code,course_id,cdate) values('2','1001,1002',sysdate);
insert into stuu(code,course_id,cdate) values('3','1001,1002,1003',sysdate);
create table cours(id char(4),cname varchar2(10));--创建表
--插入测试数据
insert into cours(id,cname) values('1001','语文');
insert into cours(id,cname) values('1002','数学');
insert into cours(id,cname) values('1003','英语');
--先将课程表组合成各种方式的连接,然后再与学生表进行对比查询出想要的数据
select s.code,s.course_id,s.cdate,ss.cname from stuu s,
((select id,cname from cours) union all
(select
a.id||','||b.id id,
a.cname||','||b.cname cname
from cours a,cours b where a.id b.id)
union all
(select
a.id||','||b.id||','||c.id id,
a.cname||','||b.cname||','||c.cname cname
from
cours a,
cours b,
cours c
where a.id b.id and b.id c.id)) ss where s.course_id=ss.id
--已经测试过了,能查询出来的
是否可以解决您的问题?
Oracle:数据库中一个字段存储有多个值,以逗号(,)分隔,现在需要将他们分开查询出来,应该怎么写SQL:
是否可以用 like ‘%1%’作为条件来查询。
其实,不太了解分开查询的意思。能举个例子吗
逗号怎么插入 oracle
变成全角的,或者把逗号转码,例如:qt; 插入数据库存储,读出的时侯再转码
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 rn
REGEXP_SUBSTR(a, '[^,]+', 1, LEVEL) STR
from (select a,rownum rn from t)
CONNECT BY LEVEL = REGEXP_COUNT( a, ',') + 1
and rn= prior rn
and prior dbms_random.value is not null;
名称栏目:oracle逗号怎么存储,oracle逗号拼接
文章路径:http://pwwzsj.com/article/dsdjscc.html