ORACLE怎么把查询出来的结果集的每条记录的每一列用逗号分隔,一条记录完后用分号分隔
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE怎么把查询出来的结果集的每条记录的每一列用逗号分隔,一条记录完后用分号分隔相关的知识,希望对你有一定的参考价值。
查询语句:
select bif_code,name from BIS_BIF_INIT
表结构:
bif_code name
9040 中国工商银行
9008 光大银行
9005 中国农业银行
效果这样:
9005,交通银行;9040,中国工商银行;
谢谢各位大神
最后拼接成一条记录
要是导出的话,用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; 参考技术A select replace(wmsys.wm_concat(bif_code||','||name||';'),';,',';') from BIS_BIF_INIT;
这个函数你不一定有,它是建库时的其中一个关于wmsys的选项,如果没有,想想办法本回答被提问者采纳 参考技术B 很简单,
环境:
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 如何查询两个时间段里的每一天数据之和。(只有开始日期和结束日期,没有每一天日期)
这样的不知道每一天的日期,直接where .. between ... and ... group by...就可以了。如果想给定日期段,获取每天作为一条记录,可以有一种方式,但日期范围不能太大,否则效率会有问题。
select trunc(Start_Date)+rownum from 表名
where rownum<=trunc(End_Date)-trunc(Start_Date)
前提是:表中要有足够的记录数,但也不能太多,否则效率同样会低。 参考技术A select trunc(date列),sum(a)
form table
where date列 between xx and xx
group by trunc(date列) 参考技术B select distinct trunc(time_column) day1, value from table_name group by trunc(time_column)
以上是关于ORACLE怎么把查询出来的结果集的每条记录的每一列用逗号分隔,一条记录完后用分号分隔的主要内容,如果未能解决你的问题,请参考以下文章
使用mysql_fetch_row()函数逐行获取结果集中的每条记录
oracle 如何查询两个时间段里的每一天数据之和。(只有开始日期和结束日期,没有每一天日期)
python中怎么将一个数据集中的每条数据转换成相应的矩阵?