wm_concat()的用法(轉)


wm_concat()簡介  (轉)

介紹:其函數在Oracle 10g推出,在10g版本中,返回字符串類型,在11g版本中返回clob類型。

括號里面的參數是列,而且可以是多個列的集合,也就是說在括號里面可以自由地用‘||’合並字符串。

用法1: Select aaa, wmsys.wm_concat(bbb || '(' || ccc || ')' ) from table group by aaa

用法2: Select aaa, wmsys.wm_concat(bbb || '(' || ccc || ')' ) over(partition by aaa) from table 

三、應用實例:

3.1、創建表 CREATE TABLE TESTAGG

(  

  A VARCHAR2(20),

  B VARCHAR2(20),

  C VARCHAR2(20)

)

3.2、初始化數據

INSERT INTO "TESTAGG" (A, B, C) VALUES ('1', 'B1','C1')

INSERT INTO "TESTAGG" (A, B, C) VALUES ('1', 'B2','C2')

INSERT INTO "TESTAGG" (A, B, C) VALUES ('1', 'B3','C3')

INSERT INTO "TESTAGG" (A, B, C) VALUES ('2', 'B4','C4')

INSERT INTO "TESTAGG" (A, B, C) VALUES ('2', 'B5','C5')

INSERT INTO "TESTAGG" (A, B, C) VALUES ('3', 'B6','C6')

3.3、wm_concat()用法

select a,wm_concat(b|| '(' || c || ')') as bc from testagg group by a order by a

1  <CLOB>--B1(C1),B2(C2),B3(C3)

2  <CLOB>--B4(C4),B5(C5)

3  <CLOB>--B6(C6)

若要轉化成string可以用to_char()函數。

 

3.4、 LISTAGG()用法

select a,LISTAGG(b,',' ) within group(order by a) as bc from testagg group by a

1 B1,B2,B3

2 B4,B5

3 B6

注意:但當數據量比較大時,一般clob字段超過4000,卻報ORA-01489:字符串連接的結果過長。有興趣的小伙伴可以研究下解決辦法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM