oracle 某个表的字段值是用逗号分隔的,如 a,b,c,我想统计 包含a的有多少条,包含b的有多少条,以此类推

作者&投稿:塞莲 (若有异议请与网页底部的电邮联系)
oracle中某个字段值用‘,’分隔开如a,b,c 这样取得a和b和c的值?~

返回的 还是插入的?

create table stuu(code char(4), course_id varchar2(50),cdate date); --创建表
--插入测试数据
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

--已经测试过了,能查询出来的

select
sum(decode(instr( x_field , 'A'),0,0,1)) a_sum,
sum(decode(instr( x_field , 'B'),0,0,1)) b_sum,
sum(decode(instr( x_field , 'C'),0,0,1)) c_sum,
from x_tab

思路:
建立一个map,key为a,b,c value为数量,默认为0
然后把所有的字段取出来,和key遍历,是否包含key,如果包含,相应的value就+1,不包含不做任何处理


建阳市17327176030: oracle 某个表的字段值是用逗号分隔的,如 a,b,c,我想统计 包含a的有多少条,包含b的有多少条,以此类推 -
欧柱丹桂: select sum(decode(instr( x_field , 'A'),0,0,1)) a_sum, sum(decode(instr( x_field , 'B'),0,0,1)) b_sum, sum(decode(instr( x_field , 'C'),0,0,1)) c_sum, from x_tab

建阳市17327176030: Oracle中某一表单中的字段里的存放的值为逗号隔开另一表单字段中的多个值,该如何取值 -
欧柱丹桂: create table stuu(code char(4), course_id varchar2(50),cdate date); --创建表 --插入测试数据 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...

建阳市17327176030: oracle 字段为空时 用null替换 -
欧柱丹桂: select nvl(字段,0) from dual或者 select replace(字段,' ','0') from dual

建阳市17327176030: 关于oracle字段的值为空格
欧柱丹桂: 第一个字段的类型是char(10),它的特点是如果插入的数据不足10位,它都会用空格补足,所以第一条数据的第一个字段被检索出来后是10个空格 你可以试一下 select replace(a,' ','n') from test1; 这里将空格替换为字符n,第一行的结果应该是10个n,第二、三行还是你想要的数据么?

建阳市17327176030: oracle中建一个视图,这个视图中的一个字段是从另外一个表(表中多条记录)取值, -
欧柱丹桂: select A || ',' || B || ',' || 'C' from table_name;--这样可实现取出来的值用逗号分开组合--如果只有这一个字段的话,没有必要建视图视图是一种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进行增该查操作,视图通常是一个或多个表的行或列的子集,视图的结果更容易理解(修改视图对基表不影响),获取数据更容易(相比多表查询更方便),限制数据检索(比如需要隐藏某些行或列),维护更方便. 游标对查询出来的结果集作为一个单元来有效的处理,游标可以定位在结果集的特定行、从结果集的当前位置检索一行或多行、可以对结果集中当前位置进行修改

建阳市17327176030: 在Oracle中如何判断一个字段的第一字符是否是逗号,如果是逗号就去掉逗号,请哪位大虾指教下! -
欧柱丹桂: substr(字符串,开始位置,截取位数) 用上面的函数可以完成你要的判断 如果是查询 select case substr(字段,1,1)when ',' then substr(字段,2,length(字段) - 1)else 字段end as 字段名 from 表

建阳市17327176030: oracle 某个表的字段里面的值是<clob>是什么意思 -
欧柱丹桂: 在oracle中,有4个大对象(lobs)类2113型可用,分别是blob,clob,bfile,nclob.5261 下面是对lob数据4102类型的简单介绍. blob:二进制lob,为二进制数据,最1653长可达4GB,存贮在版数据库中. clob:字符lob,字符数据,最长可以达到4GB,存贮在数据库中. bfile:二进制文件;存贮在数据库之外的只读型二进制数据,最大长度由操作系统限制权. nclob:支持对字节字符集合(nultibyte characterset)的一个clob列.

建阳市17327176030: REPLACE函数替换oracle表中字段的值 -
欧柱丹桂: [TEST1@kokooa]>select * from t1; NAME--------------------300,500 [TEST1@kokooa]>select replace(name,'300','总部') from t1; REPLACE(NAME,'300','总部')-------------------------------------------------------------------------------- 总部,500 [TEST1@kokooa]...

建阳市17327176030: ORACLE查询语句中A表中某个字段名是B表中某个值,查询时是否可以直接使用查出来B的值作为A条件 -
欧柱丹桂: 这个的话,需要用到not in来实现.select * from A where a not in ( select b from B);备注:以上语句就是从B表中先读取出来所有的b的值,之后通过not in函数进行判断,不符合条件的输出结果.

建阳市17327176030: 在oracle中,创建一张表,其中有个字段是LOB的类型,利用DBMS - LOB包的函数插入和获取数据,怎么做? -
欧柱丹桂: 先说一下怎么用LOB:在Oracle中,存储在LOB中数据称为LOB的值,如使用Select 对某一LOB字段进行选择,则返回的不是LOB的值,而是该LOB字段的定位器(可以理解为指向LOB值的指针).如执行如下的SQL语句:DELCAREAUDIO...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网