oracle中listagg()和wmsys.wm_concat()基本用法
一、LISTAGG()
簡介
介紹:其函式在Oracle 11g 版本中推出,對分組後的資料按照一定的排序進行字串連線。
其中,“[,
]”表示字串連線的分隔符,如果選擇使用[over (partition by )
]則會使其變成分析函式;
用法1:
SELECT aaa, listagg(bbb,',') within GROUP (ORDER BY aaa) FROM table GROUP BY aaa
用法2:
SELECT aaa, listagg(bbb,',') within GROUP (ORDER BY aaa) over(partition by aaa) FROM table
二、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:字串連線的結果過長
。有興趣的小夥伴可以研究下解決辦法。
相關文章
- Oracle 10g RAC中Srvctl基本用法Oracle 10g
- wmsys.wm_concat 函式用法函式
- WMSYS.WM_CONCAT 函式的用法 ZT函式
- vue中vuex的五個基本屬性和用法Vue
- linux中grep基本用法Linux
- C++中& 的基本用法C++
- Hbase簡介和基本用法
- oracle中的exists和not exists和in用法詳解Oracle
- Python中裝飾器的基本概念和用法Python
- oracle中的CURRVAL和NEXTVAL用法Oracle
- oracle中的exists 和not exists 用法詳解Oracle
- Java反射和註解基本用法Java反射
- oracle中top用法Oracle
- Oracle中with的用法Oracle
- Oracle中group by用法Oracle
- 非空校驗在oracle和mysql中的用法OracleMySql
- 教程-檢視的概念和基本用法
- 【 Oracle中rownum的用法 】Oracle
- Oracle 中 case的用法Oracle
- Promise基本用法Promise
- Git基本用法Git
- mongoose基本用法Go
- tcpdump基本用法TCP
- GORM基本用法GoORM
- oracle中substr() instr() 用法Oracle
- oracle樹中prior的用法Oracle
- Oracle中rowid的用法Oracle
- 【oracle中rowid的用法】Oracle
- oracle中merge into用法解析Oracle
- Oracle PL/SQL中EXCEPTION用法OracleSQLException
- oracle中copy from的用法Oracle
- ORACLE 中ROWNUM用法總結!Oracle
- ORACLE 中ROWNUM用法總結Oracle
- linux中#和## 用法Linux
- oracle 12C wmsys.wm_concat()函式Oracle函式
- oracle 轉pg wmsys.wm_concat 的替代方案Oracle
- Oracle11.2新特性之listagg函式Oracle函式
- 第四篇:new和delete的基本用法delete