您的位置:首页 > 数据库 > Oracle

Oracle wmsys.wm_concat的几个用法

2014-03-14 21:39 423 查看
今天才发现了wmsys.wm_concat这个有趣有用的函数,它的作用是以','链接字符。

例子如下:

SQL> create table idtable (id number,name
varchar2(30));

Table created

SQL> insert into idtable values(10,'ab');

1 row inserted

SQL> insert into idtable values(10,'bc');

1 row inserted

SQL> insert into idtable values(10,'cd');

1 row inserted

SQL> insert into idtable values(20,'hi');

1 row inserted

SQL> insert into idtable values(20,'ij');

1 row inserted

SQL> insert into idtable values(20,'mn');

1 row inserted

SQL> select * from idtable;

       
ID NAME

---------- ------------------------------

       
10 ab

       
10 bc

       
10 cd

       
20 hi

       
20 ij

       
20 mn

6 rows selected

SQL> select id,wmsys.wm_concat(name) name from
idtable

  2  group by id;

       
ID NAME

----------
--------------------------------------------------------------------------------

       
10 ab,bc,cd

       
20 hi,ij,mn

SQL> select id,wmsys.wm_concat(name) over (order
by id) name from idtable;

       
ID NAME

----------
--------------------------------------------------------------------------------

       
10 ab,bc,cd

       
10 ab,bc,cd

       
10 ab,bc,cd

       
20 ab,bc,cd,hi,ij,mn

       
20 ab,bc,cd,hi,ij,mn

       
20 ab,bc,cd,hi,ij,mn

6 rows selected

SQL> select id,wmsys.wm_concat(name) over (order
by id,name) name from idtable;

       
ID NAME

----------
--------------------------------------------------------------------------------

       
10 ab

       
10 ab,bc

       
10 ab,bc,cd

       
20 ab,bc,cd,hi

       
20 ab,bc,cd,hi,ij

       
20 ab,bc,cd,hi,ij,mn

6 rows selected

个人觉得这个用法比较有趣.

SQL> select id,wmsys.wm_concat(name) over
(partition by id) name from idtable;

       
ID NAME

----------
--------------------------------------------------------------------------------

       
10 ab,bc,cd

       
10 ab,bc,cd

       
10 ab,bc,cd

       
20 hi,ij,mn

       
20 hi,ij,mn

       
20 hi,ij,mn

6 rows selected

SQL> select id,wmsys.wm_concat(name) over
(partition by id,name) name from idtable;

       
ID NAME

----------
--------------------------------------------------------------------------------

       
10 ab

       
10 bc

       
10 cd

       
20 hi

       
20 ij

       
20 mn

6 rows selected

 

转载:http://blog.csdn.net/YY_MM_DD/archive/2008/10/30/3182953.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: