ORACLE怎么把查询出来的结果集的每条记录的每一列用逗号分隔,一条记录完后用分号分隔

作者&投稿:薄骆 (若有异议请与网页底部的电邮联系)
数据库中,如何用SQL语句实现将某字段下的所有记录合成一条记录,用逗号隔开~

MS Sqlserver(for xml path的巧用):
select 'T1' M, stuff((select ',' + CAST(T1 as varchar) from Table_1 for xml path('')),1,1,'') Nunionselect 'T2' M, stuff((select ',' + CAST(T2 as varchar) from Table_2 for xml path('')),1,1,'') NOracle(自带这样的函数):
select wm_concat(T1) N from Table_1;--10g写法select listagg(T1,',') within group (order by T1) N from Table_1;--11g写法

上代码上图
select length('张三,李四,王五,赵六')-length(replace('张三,李四,王五,赵六',','))+1 from dual;


首先,看你是想导出成文本,还是直接插表里
要是导出的话,用spool就行

你那个试试,用下面三句

spool e:\log.txt; (当然随便放什么地方,起什么名,路径对了就行)
select bif_code||','||name||';' from bis_bif_init;
spool off;

然后你去路径哪里找那个log.txt,里面就是你说那格式的,这格式可以调整
你要想放表里也行中间那句可以换成
select 'insert into bis_bif_init( 新列名 ) values(' ||bif_code|| ',' || name || ') where xxx;' from bis_bif_init;
就是说格式自己定,''中想加啥加啥用||连起来就行。同样去找txt,格式就是你定的那样。
-------------------------------------------------------------------------------------------
这是一种txt的,还有一个,如果你想在这个表的新列里直接显示加逗号那个格式的,也可以。就不用txt了,下次直接导出该列就行。但需要在表里加个列

alter table BIS_BIF_INIT add xxx(新列名字) char(100) generated always as (bif_code||','||name);

然后表里就有这个拼好的列,可能字符会很多,定大点

------------------------------------------------------------------------------------
最后一种,直接建个视图得了,省事,就一句话
create view vie_bis_bif_init as bif_code||','||name||';' from bis_bif_init;

select replace(wmsys.wm_concat(bif_code||','||name||';'),';,',';') from BIS_BIF_INIT;
这个函数你不一定有,它是建库时的其中一个关于wmsys的选项,如果没有,想想办法

很简单,
环境:
SQL> create table bis_bif_init(bif_code integer,name varchar2(30));
SQL> insert into bis_bif_init values (9040,'China Bussiness Bank');
1 row created.
SQL> insert into bis_bif_init values (9002,'Germany BANK');
1 row created.
SQL> commit;
Commit complete.

脚本:
declare
i integer:=1;
string_out varchar2(10000):='';
type bbi_table_type is table of bis_bif_init%rowtype index by binary_integer;
v_bbi_table bbi_table_type;
begin
select bif_code,name bulk collect into v_bbi_table from bis_bif_init;
for i in 1..v_bbi_table.count loop
string_out:=string_out||v_bbi_table(i).bif_code||','||v_bbi_table(i).name||';';
end loop;
dbms_output.put_line(string_out);
end;

结果:
SQL> declare
i integer:=1;
2 3 string_out varchar2(10000):='';
4 type bbi_table_type is table of bis_bif_init%rowtype index by binary_integer;
5 v_bbi_table bbi_table_type;
6
7 begin
8 select bif_code,name bulk collect into v_bbi_table from bis_bif_init;
9 for i in 1..v_bbi_table.count loop
10 string_out:=string_out||v_bbi_table(i).bif_code||','||v_bbi_table(i).name||';';
11 end loop;
12 dbms_output.put_line(string_out);
13 end;
14 /

9040,China Bussiness Bank;9002,Germany BANK;

PL/SQL procedure successfully completed.

别忘记加上SQL> set serveroutput on
................


在oracle中怎么将查询到的数据插入到另一个表中?
在oracle中将查询到的数据插入到另一个表中:1、Insert into t_tab 2、select * from s_tab where 条件 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理...

oracle 中如何将查询到的i.suc_amount按x分别进行小计,最后总计,应该...
你试试 Select o.org_desc || '_' || i.b_company x,i.trade_time,i.cust_name,i.order_id,sum(i.suc_amount) over(partition by o.org_desc || '_' || i.b_company),i.plug_id,i.b_company,sum(i.suc_amount) over()from t_ec_trade_info i, t_ec_org_mapping o whe...

windows下怎么查看oracle的安装路径
查询语句:SQLconn\/assysdba已连接。SQLcreatedirectorysscFjSscasD:\\his\\data\\ssc\\fj目录已创建。windows下怎么查看oracle的安装路径windows下怎么查看oracle的安装路径1、在桌面上找到计算机,右键管理,点击服务和应用程序,双击服务,找到oracle;点击电脑左下角的开始--运行,输入sqlplus,回车。2、windows...

oracle 怎么把第一个表的查询结果作为第二个表的被查询字段
execute immediate ‘select ' || (select 字段 from 表1 where rownum=1) || ' from 表2'

oracle 数据库把查询一个表的数据添加到另一个表里, 可是其中一列是固定...
(1)把那一列写成常量 insert into table1(a,b,c,d)select 'aaaa' as a,--常量 b,c,d from table2 (2)把列全写一遍,把固定值改掉!insert into A select a,b,‘111’ c from B ;(3)如果两个表的表结构一致的话,可以直接查询插入 insert into A (select * from B) --...

oracle中如何将多个查询结果在一张表中显示
可以将你的三个表的查询结果使用union all联合起来,然后使用Oracle的decode函数来查询 select 姓名,sum(decode(tbname,'表1',人数,null)) 表1人数,sum(decode(tbname,'表2',人数,null)) 表2人数,sum(decode(tbname,'表3',人数,null)) 表3人数 from (select 姓名,count(姓名) 人数,'表1...

如何把oracle中查询出来的一列进行拆分。如查出结果为1@2@3@4,如何...
通过instr和truncate函数进行拆分。instr得到各个顺序的@的位置,truncate通过得到的位置情况进行字符串截取。

oracle怎么把存储过程查询出来的结果集显示出来
create or replace procedure p_cnt(p_time in varchar2,---查询的条件 p_cur out SYS_REFCURSOR)---游标返回 IS v_sql varchar2(1000) :='';v_date varchar2(20);BEGIN v_date := replace(p_time, '-', '');---时间的格式转换 v_sql := 'select * from dapartment d ...

oracle 中查询结果作为查询条件
select * from t2 inner join t1 on t2.A=t1.A and t2.B=t1.B where exists((select t3.A,t3.B from t3 where t2.A=T3.B AND ...)就这样!

oracle 数据库把查询一个表的数据添加到另一个表里, 可是其中一列是固定...
如果两个表的表结构一致的话,可以直接查询插入 insert into A (select * from B) --前提是A表B表同库,字段一致,这样就把B表所有数据追加写入到了A表里;如果需要写入固定值,那么就得把两表对应的字段写出来 insert into A (A.field1, A.field2, A.field3, A.field4) values (select ...

射阳县15654283135: oracle中如何将多个查询结果在一张表中显示 -
子研丹香: 可以将你的三个表的查询结果使用union all联合起来,然后使用Oracle的decode函数来查询 select 姓名,sum(decode(tbname,'表1',人数,null)) 表1人数,sum(decode(tbname,'表2',人数,null)) 表2人数,sum(decode(tbname,'表3',人数,...

射阳县15654283135: oracle中怎么将多个表的查询结果组合成一组信息插入到数据库中 -
子研丹香: 使用create table...as select ...from...where...这样的语法.该语句将后面select的结果,生成一张新的表中.可以将select语句写好,select后面要指明字段.然后在前面的加上create table 表名.这样数据就会生成到新的表上.

射阳县15654283135: oracle语句请教 如何将每条查询出来的数据统计加起来 -
子研丹香: 你是在a表里求出了多个list,然后在b表找每个list对应的条数,在把这些条数依次加起来吗.用存储过程吧.

射阳县15654283135: oracle存储过程中循环查询返回多个结果集怎么集合在一起 -
子研丹香: 你可以先把数据集保存到array里面,完了之后再用一次性的导出来.又或者你可以检查你的循环查询,是否能用一条sql来完成.

射阳县15654283135: ORACLE怎么把查询出来的结果集的每条记录的每一列用逗号分隔,一条记录完后用分号分隔 -
子研丹香: 首先,看你是想导出成文本,还是直接插表里 要是导出的话,用spool就行你那个试试,用下面三句spool e:\log.txt; (当然随便放什么地方,起什么名,路径对了就行) select bif_code||','||name||';' from bis_bif_init; spool off;然后你去路径哪...

射阳县15654283135: 如何将oracle数据库查询结果合并成一条记录 -
子研丹香: SELECT SYS_CONNECT_BY_PATH(MSG, ';') FROM (SELECT NAME || ':' || TO_CHAR(ID) MSG FROM TABLE_NAME);--看看是不是你要的

射阳县15654283135: 怎么在oracle存储过程中输出查询结果集? -
子研丹香: 我的一个例子 var rs refcursor; exec :rs := ljp_tmp.getHotline; print rs;

射阳县15654283135: oracle中查询的结果怎么导出excel -
子研丹香: 方法/步骤1. 首先打开PL/SQL,然后在SQL Window窗口中,查询需要导出的数据. 2. 在查询的结果集上右键选择--Copy to Excel-->Copy as xls/xlsx导出到97-2003格式的.xls或者2007之后的xlsx文件. 3. 下图为导出后自动打开的导出文件,这样就成功的导出了

射阳县15654283135: oracle 数据库,能不能将查询的结果创建成新表. -
子研丹香: 这个是可以的.sql:create table tablename1 as select t2. * from tablename2 t2 where t2.filename ='张三'.解释:就是从tablename2 读取出来的结果集作为tablename1 的数据.之后可以通过 “ select * from tablename1” 进行结果查看....

射阳县15654283135: oracle存储过程如何输出结果集 -
子研丹香: 过程返回记录集: CREATE OR REPLACE PACKAGE pkg_test ASTYPE myrctype IS REF CURSOR;PROCEDURE get (p_id NUMBER, p_rc OUT myrctype); END pkg_test; / CREATE OR REPLACE PACKAGE BODY pkg_test AS...

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