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

查询语句:selectbif_code,namefromBIS_BIF_INIT表结构:bif_codename9040中国工商银行9008光大银行9005中国农业银行效... 查询语句:
select bif_code,name from BIS_BIF_INIT

表结构:
bif_code name
9040 中国工商银行
9008 光大银行
9005 中国农业银行

效果这样:
9005,交通银行;9040,中国工商银行;

谢谢各位大神
最后拼接成一条记录
展开
 我来答
动物信使123
2013-10-17 · TA获得超过163个赞
知道答主
回答量:150
采纳率:0%
帮助的人:66.5万
展开全部
首先,看你是想导出成文本,还是直接插表里
要是导出的话,用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;
太平岁年丰9
2013-10-16 · TA获得超过1230个赞
知道小有建树答主
回答量:1017
采纳率:100%
帮助的人:1073万
展开全部
select replace(wmsys.wm_concat(bif_code||','||name||';'),';,',';') from BIS_BIF_INIT;
这个函数你不一定有,它是建库时的其中一个关于wmsys的选项,如果没有,想想办法
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
anlenshen
2013-10-16 · TA获得超过109个赞
知道答主
回答量:44
采纳率:100%
帮助的人:36.8万
展开全部
很简单,
环境:
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
................
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式