Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2882391
  • 博文数量: 200
  • 博客积分: 2413
  • 博客等级: 大尉
  • 技术积分: 3067
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 22:07
文章分类

全部博文(200)

文章存档

2018年(2)

2017年(8)

2016年(35)

2015年(14)

2014年(20)

2013年(24)

2012年(53)

2011年(44)

分类: Oracle

2014-09-10 11:39:29

oracle将返回结果放在一行
有时我们需要将返回结果放到一行中,比如
select * from 
(select username from dba_users
order by username)
where rownum<10;

USERNAME
------------------------------
ANONYMOUS
APEX_030200
APEX_PUBLIC_USER
APPQOSSYS
CTXSYS
DBSNMP
DIP
EXFSYS
FLOWS_FILES

9 rows selected.

想把上的结果变为一行,并用逗号分隔
ANONYMOUS,APEX_030200,APEX_PUBLIC_USER,APPQOSSYS,CTXSYS,DBSNMP,DIP,EXFSYS,FLOWS_FILES

办法:使用wmsys.wm_concat() 可以实现。
注意!wmsys.wm_concat()自动会在每列后面加上逗号。

set linesize 120
select wmsys.wm_concat(t.username)  from 
(select username  from dba_users
order by username) t
where rownum<10;

WMSYS.WM_CONCAT(T.USERNAME)
------------------------------------------------------------------------------------------------------------------------
ANONYMOUS,APEX_030200,APEX_PUBLIC_USER,APPQOSSYS,CTXSYS,DBSNMP,DIP,EXFSYS,FLOWS_FILES


如果涉及到多列,只需要将列放在该函数中,并已逗号分隔即可
set linesize 120
select wmsys.wm_concat(t.USER_ID||':'||t.username)  from 
(select username,USER_ID  from dba_users
order by username) t
where rownum<10;

WMSYS.WM_CONCAT(T.USER_ID||':'||T.USERNAME)
------------------------------------------------------------------------------------------------------------------------
46:ANONYMOUS,78:APEX_030200,76:APEX_PUBLIC_USER,31:APPQOSSYS,43:CTXSYS,30:DBSNMP,14:DIP,42:EXFSYS,75:FLOWS_FILES

阅读(2819) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~